拼吾爱程序人生.Net编程ADO.Net ADO.NET Entity Framework 体验:安装及初试

1  /  1  页   1 跳转 查看:712

ADO.NET Entity Framework 体验:安装及初试

ADO.NET Entity Framework 体验:安装及初试

准备工作:
  • 将Visual Studio 2008及.NET Framework 3.5升级到SP1。点击转到升级地址
  • 安装SQL SERVER 2005,VS 2008中自带的EXPRESS版的SQL SERVER应该也可以用。
  • 下载并附加数据库:点击下载DemoDb
  • 创建一个VB Application,注意,目标Framework要设置成3.5版。


查询实例:

1. 创建映射
在项目上右击添加新项目,选择新出现的"ADO.NET Entity Data Model",命名为NotebookDb.edmx。

 附件: 您所在的用户组无法下载或查看附件
点击"添加"后出现实体数据模型向导。这时,选择"从数据库生成",建立好相应的数据连接之后,在下方给实体数据模型设定一个名称(示例中使用默认名称DemoDbEntities),并且点击"下一步"。

 附件: 您所在的用户组无法下载或查看附件
进入选择表的步骤。我们暂且把两个表全部都选上。点击"完成"。

 附件: 您所在的用户组无法下载或查看附件
这样,一个看似LinQ to SQL 的实体数据模型设计器就展现在眼前了。

 附件: 您所在的用户组无法下载或查看附件
我们看到,两个表对应映射成了两个实体,这两个实体中有两类属性,分别为"Scalar Property"和"Navigation Property";两个实体之间,还形成了一个1对多的关系。如果大家看过一点UML,对这种关系符号一定不会感觉陌生。Visual Studio下方,映射详细信息面板自动开启。当我们选择一个实体时,它自动显示实体与表的列之间的映射关系。列到属性,数据库类型到.NET类型……一目了然。

(文/xiaomi7732  出处/博客园)

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [ADO.Net] 的这些文章也感兴趣:

从DataGrid导出Excel产生乱码的一个很好的解决方案
用C#开发PocketPC数据库应用程序
ADO.NET和LINQ中古怪的事务特性
当DataSet中包含主/子表时,Update更新步骤
Using ADO.NET Data Service – Consuming
亲密接触ADO.NET2.0
通过DataTable获得表的主键
ADO.NET 数据库访问之数据分页
获取数据库中的所有表
迈向Data 2.0——学习使用ADO.NET数据服务框架
 

回复: ADO.NET Entity Framework 体验:安装及初试

2. 根据需要,修改映射

由于实体数据模型存在于客户端,故其修改不会对数据库造成影响。也就是说,我们可以根据应用程序的需要,修改映射关系,并且这种修改不会影响数据库。这一特点,会在同一企业不同领域使用共享的数据存储,不同的领域模型的情况下带来受益。我们来试着删除Price的映射。实在是超级简单啊,在实体上右击,点击"删除",观察一下映射详细信息面板:Weight已经被删除了。

 附件: 您所在的用户组无法下载或查看附件

3. 使用LINQ to Entity查询并输出结果

最后,我们来试试怎么通过LinQ to Entity把查询结果输出。无论如何,LinQ就是LinQ,LinQ查询就脱离不了我们在VB 9.0新特性之LINQ(一)中提到的那三步:
  • 确立数据源
  • 创建查询
  • 执行查询
我们的代码也对应着这三步进行:
Sub Main()
    'Create Entity Set
    Dim db As New DemoDbEntities()


'Create Query


Dim
query = From aLaptop In db.NotebookStorage _





Select
aLaptop



'Execute Query


For
Each aLaptop In query



Console.WriteLine(aLaptop.Brand & vbTab & aLaptop.Type & vbTab & aLaptop.Price)


Next

End Sub

编译。如果大家使用下载的数据库,就会发现,编译无法通过,有一个错误:
Error 3023: Problem in Mapping Fragment starting at line 92: Column NotebookStorage.Weight in table NotebookStorage must be mapped: It has no default value and is not nullable.
    E:\...\EFWalkThrough\NotebookDb.edmx    93    15    EFWalkThrough

呵呵,看来,刚才删除的列是不被允许了,因为数据库中有一个约束,要求必须有此列。我们要把它添加回去。打开实体数据模型设计器,右击,添加一个"Scalar Property"并给它取个名称:"重量",设置对应的"Nullable"属性为"False"。

 附件: 您所在的用户组无法下载或查看附件
然后,在"映射详细信息"面板中,通过下拉选择框,把表中的Weight列映射到刚才新建的"重量"属性。

 附件: 您所在的用户组无法下载或查看附件
顺手修改一下输出语句:
Console.WriteLine(aLaptop.Brand & vbTab & aLaptop.Type & vbTab & aLaptop.Price & vbTab & aLaptop.重量)

好,F5,编译运行。输出结果如下:

 附件: 您所在的用户组无法下载或查看附件
大家注意到了输出结果中,重量全部都变成了2?呵呵,看一下重量的数据类型便知道其中缘故了吧。^_^


小结:
在本文中,我们Step by step的创建一个数据实体模型;然后,对实体模型中的映射关系作了修改(删除映射、添加映射);我们还使用LinQ to Entity把数据从实体对象集中查询并输出到了屏幕。

本文中源代码下载:
 附件: 您所在的用户组无法下载或查看附件
 
1  /  1  页   1 跳转

快速回复帖子

标题
禁用 URL 识别
禁用表情
禁用 Discuz!NT 代码
使用个人签名
  [完成后可按 Ctrl+Enter 无刷新发布]  

版权所有 拼吾爱程序人生 

Powered by Discuz!NT 2.1.202   Copyright © 2001-2008 Comsenz Inc. 鄂ICP备07500843号
返顶部