使用Entity Framework为WP7创建数据库 第一部分

junwong 发布于 2012/08/08 16:45
阅读 2K+
收藏 9
注意: Entity Framework 现在已经开源了, 你可以从Codeplex上下载到

当我开始为Windows Phone开发应用时,发现在上面没有一个很好的数据库来方便存储大型数据。那时很多人都是靠序列化与反序列化存储在独立存储的xml文件来完成此功能的,非常糟糕;但是后来芒果发布了,带来完全可用的数据库,虽然好用但是我必须完全去手写一个个类,而这也非常耗时。后来我发现能用 SqlMetal 来从SQL Compact文件映射类出来,这确实是一件让人兴奋的事情。


所以现在我仅仅只需要做到创建SDF文件,恰好我的本职工作就是干这个的(我一直都在用Entity Framework来为WinForms应用创建SDF文件存储数据)

要在WP7.5上使用这个技术,你需要这些东西:
1,Windows Phone SDK 7.1 + Update 7.11
2,Entity Framework(如果你已经安装了.NET 4,那么你就有了这玩意)
3,Entity Designer Database Generation Power Pack

然后需要完成以下3个步骤:
1,使用Entity Framework创建创建数据模型
2,根据模型生成数据库,然后使用SqlMetal依据数据库映射成能在WP7上使用的对应类
3,测试结果

你可以先从这里下载源码

Part 1:使用Entity Framework创建数据模型
为了创建数据模型,需要停下来想想准备去存储哪些数据。
1,创建新解决方案,名称为"AppTracker",然后添加一个名为"AppTracker.Entities"的普通类库。(请确保你选择的.net framework版本为4,否则后面有些功能无法实现)


2,删除 Class1.cs 文件


3,右键点击项目 AppTracker.Entities 然后添加一个新建项,如图添加一个ADO.NET Entity Data Model,并命名为 AppTrackerDataModel.edmx


4,在下一步的对话框中,选择空数据模型然后点击完成按钮


5,然后我们就可以创建数据模型了


6,最简单的方式就是添加新的实体(这个实体会转换成数据库中的表),右键点击工作区然后选择添加新实体。
接着在Entity Name文本框中,我这里填"Idea"。注意这里是单数类型词,如下图


7,现在为第一个实体添加属性,有三种方法:右键点击工作区,或从工具箱直接拖放,或者我最喜欢的,按住Insert键然后点击实体图的Properties头部。


8,当添加完所有的属性后,使用Properties Viewer设置所有属性的类型,如下图,我把Name与Description设置为默认的String类型。


9,下一个步骤就是为分类信息添加对应的实体,如下图


10,现在分类的实体也被创建完毕,对于它只需要添加一个Name属性就足够,这里我采用的最方便的方法就是从Idea实体直接复制Id属性与Name属性过来


11,在工具箱中找到 Association tool,选择它然后从Category实体拖放到Idea实体,这就创建了一个一对多的关系。即每一个Idea只能属于一个Category,但是一个Category可以包含多个Idea。


12,现在双击那根连接线来设置参照约束。如下图


13,现在该添加第三个实体 -- Note,这里注意属性IdeaId


14,这里需要另一个一对多的关系,但这里是一个Idea对应多个Note,而一个Note只属于一个Idea

15,现在双击连接线来设置参照约束


16,现在该到了检查代码是否有错误的时候了,如下图


OK,这篇文章就是我们整个系列的第一篇,完成使用Entity Framework创建一个基本数据模型,在下一个部分我们准备生成数据库文件然后使用SQLMetal来生成数据类。

原文链接 , OSChina.NET 原创翻译
加载中
0
Midnight
Midnight

自己翻译的? 不错, 支持了!

 

0
汪喻祥
汪喻祥
WP7上不用NoSQL,居然还用关系型数据库。
0
uian2000
uian2000
现在讨论7还有意义么?
0
Jacle
Jacle

引用来自“uian2000”的答案

现在讨论7还有意义么?
时间会给出答案,请耐心等待
0
周如意
周如意

在下一个部分我们准备生成数据库文件然后使用SQLMetal来生成数据类。

下一个部分呢?

0
sjack
sjack
、        你快回来, 把我的楼主给带回来 ,,, 来 ,,, 来,,,
返回顶部
顶部