2KB项目,专业的源码交易网站 帮助 收藏 每日签到

Windows Phone 8 中应用 DataContext 操作已有数据库

  • 时间:2019-06-12 09:01 编辑:2KB 来源:2KB.COM 阅读:505
  • 扫一扫,手机访问
  • 分享
摘要:
Windows Phone 英文原文:Windows Phone 8 Local Database DataContext from Existing Database

外地数据库(颠末 LINQ to SQL访问的 SQL Server Compact database)是一个运转在Windows Phone7.5 和8 上的数据访问API。

在微软的文档(列表 这是我的博客, 还有十分多有效的Windows Phone 外地数据库链接)中,总是在描画一个代码优先的Task流,诲人不倦地为Windows Mobile和桌面创建SQL Server Compact 数据库架构,而且它很难和你的App一块公布。我的Tools,可作为 SQL Server Tools箱 Visual Studio 插件,也可用于有SQL Server Compact 3.5Tools箱的轻易的单机版次序 (目前还是alpha版).两种状况都适用。当你不想在PC上安装Visual Studio时,单机版对 VS Express版用户很有效(这是个单一的exe文件,很随便公布)。 

接下来,,我将应用Visual Studio 2012来演示,怎么应用SQL Server Compact Toolbox 取得一个已存在的SQL Server数据库,并把它作为内置Windows Phone数据库嵌入到一个新Windows Phone 8 App中。此操作分3步:

- 在Server数据库中创建一个SQL Server Compact 数据库,并把它参与Windows Phone 工程。
- 生成 LINQ to SQL DataContext 和关联类。
- 在代码中应用数据库。

我假定你有 Visual Studio 2012 Pro或更高版本,并已经安装Windows Phone 8 SDK。

创建一个 SQL Server Compact数据库

为这个示例,我已经创建了一个新的 Windows Phone Databound App,并选择 Windows Phone OS 8.0 作为目标系统.

image

然后,使用Tools箱创建一个新的SQL Server Compact 3.5 数据库,保管到Phone工程地址的文件夹 (你可以用“Open Folder in File Explorer”上下文菜单)。

image

单击 Create,导航到工程文件夹,然后输出 PostCodes.sdf, 点击OK.

image

点击OK,一个新的空数据库会参与到Tools箱的数据库列表中:

image

现在,我们需求连接到SQL Server 数据库并生成脚本,然后在阿谁新的空数据库上实行此脚本。

image

用上面的Tools箱菜单项创建并保管数据库脚本,然后挨着PostCodes.sdf数据库文件,掀开SQL编辑器:

image

在编辑器中点击 Open 按钮,加载脚本,然后按下Execute按钮,运转脚本。

image

现在,一个包含PostCode表的数据库就创建了(脚本在这),这个表保管着丹麦一切的邮政编码。

最后一步是把数据库文件参与到 Phone工程里。在处置方案管理器中,选择“显示一切文件”,然后把 PostCodes.sdf参与工程。 在本示例中,我们渴望在Phone中,这个数据库是可写入的,因此,把它作为“嵌入本钱” 参与工程。--假设是 只读数据库,可以作为内容参与工程。

image

生成 LINQ to SQL DataContext

为基于数据库生成DataContext,在Tools箱中点右键,选择“Add Windows Phone DataContext to current project ”

image

image

让我们看看这个对话框的选项 dialog:

Context name:生成DataContext的类名

Namespace: 可以为生成的代码指定不合的命名空间

Language: 可生成 C# 或 VB code.

Pluralize: 假设选中,会重命名表 (Person => People) 诸如此类.

Create a file per table: 但凡,只创建一个文件Normally

低级选项:

Add schema version table: 假设数据库文件可写,而且在以后的App版本中会应用到DatabaseSchemaUpdater 类,请选中此项。

Add rowversion column to all tables: 假设选中此项,将会确保在一切表中包含rowversion列(之前的时间戳),它能在实行UPDATE and DELETE时提高功用(参考我的博客 这里 和 这里)。

Include ConnectionStringBuilder: 会在工程中新建一个 LocalDatabaseConnectionStringBuilder类,能用风行的办法创建强类型的连接字符串。

关于这个示例,仅需单击OK,然后工程中会参与PostCodesContext.cs ,到此,我们就做完了。

image

在代码中应用数据库

最后,为了演示这个包含数据的App,修改MainPage.xaml的DataTemplate,就像下面:

<DataTemplate>
  <StackPanel Margin="0,0,0,17">
      <TextBlock Text="{Binding Zip}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
      <TextBlock Text="{Binding City}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
  </StackPanel>
</DataTemplate>

用以下代码交流 MainPage.xaml.cs中的OnNavigatedTo工作处理:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    using (PostCodesContext ctx = new PostCodesContext(PostCodesContext.ConnectionString))
    {
        ctx.CreateIfNotExists();
        ctx.LogDebug = true;
        MainLongListSelector.ItemsSource = ctx.PostCode.ToList();                
    }
}

这个代码初始化一个新的PostCodesContext 实例,(包含在“using”中,它是Disposable). CreateIfNotExists 方法,从工程中提取PostCodes.sdf,并复制到隔离存储区。把LogDebug 设置为true,会在调试时在调试窗口中显示一切SQL定义文本:

SELECT [t0].[Id], [t0].[Zip], [t0].[City], [t0].[Street], [t0].[Company], [t0].[IsProvince], [t0].[rowguid] AS [Rowguid], [t0].[ts] AS [Ts]

FROM [PostCode] AS [t0]

最后,调用ToList()实行SELECT并前去PostCodeTools列表,它被绑定到LongListSelector的ItemsSource 属性。

结果: 

pc

总结

让我们总结下这些方法的优点:

- 应用桌面数据库Tools用来操作数据和履行模型设计 
- 在数据库表和 DataContext 类做 1:1 映照可以节省时间 
- DataContext 类和实体类是可扩展的
- 生成的 DataContext 包含索引定义(SqlMetal 不支持,这是 Windows Phone 的扩展) 
- 生成的 DataContext 包含 CreateIfNotExists 方法
- 生成的 DataContext 包含 LogDebug 属性,容许你在调试窗口反省生成的 SQL 语句
- 可将生成的 DataContext 类分红多个文件
- 可增加版本表,来支持模型的修正
- 可增加 rowversion 列里提升 UPDATE 和 DELETE 功用
- 可包含 ConnectionStringBuilder 类来构建一个强类型的连接字符串,应用低级的连接字符串选项

本文中的一切译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译Task依照 CC 协议,假设我们的Task有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
上一篇:Docker 公司已死
下一篇:奇虎360 和 go
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部