Model First:创建实体数据模型(ADO.NET 实体数据模型)
2013-12-17 23:35
507 查看
Microsoft Entity Framework是一个对象关系映射工具(Object Relational Mapping ,O/RM)工具。它可以让你从一个数据库自动地生成数据接入层。实体框架免去了你手工创建数据接入层的乏味工作。ADO.NET 实体数据模型可以映射数据库与数据表,也可以映射模型类。它是关系数据库与面向对象系统的桥梁,闲话少说,就让我们举个简单的例子来解析它吧!
![](http://images.cnitblog.com/blog/530895/201312/17222119-17132a90194a4a06b617090d4f5ba3b8.jpg)
2. 在项目上,右键=》选择“添加->新项目..” 如下图:选择:Ado.net entity data model : 名为:School
![](http://images.cnitblog.com/blog/530895/201312/17222630-950e1e829b834483a75f5e3ec43421af.jpg)
3. 选择“empty model ” 点击完成 .如下图:
![](http://images.cnitblog.com/blog/530895/201312/17222800-5d2e6d2a9a56445eb2969baa9255b530.jpg)
4. 此时会自动打开edmx的设计器界面;如下图:
![](http://images.cnitblog.com/blog/530895/201312/17222946-96718caced99470a973e38f38fb6a484.jpg)
5. 用鼠标拖动“entity(实体) ”到界面设计器上。就会生成一个实体出来。如下图:
![](http://images.cnitblog.com/blog/530895/201312/17224026-197eafc1f5ef4885b17d94fd595fb256.jpg)
如果你想重命名一个实体类,你可以双击实体设计器里的类的名字然后输入一个新的名字。或者,你可以在实体设计器里选择一个实体后在属性窗口里修改这个实体的名字。记住在修改后保存你的实体数据模型。在这个场景后面,实体设计器生成了一系列的C#模型类。你可以在解决方案浏览器窗口里通过打开XXModel.Designer.cs文件看到这些类。别修改Designer.cs里面的代码,因为你的改动会在下一次使用实体设计器的时候会被重新覆写。
如果你只想要扩展在Designer.cs里面的实体类的功能,你可以在单独文件里创建部分类。
6. 给这三个实体增加其它属性:在设计器上点击鼠标右键来添加。默认情况下:属性是string类型的。选中实体中的某一个属性项(如ClassID),然后在属性面板中将其type改为:int32.(因为,它将作为外键与Couse实体中的ID对应,所以确保两者的类型要一样)如下图:
![](http://images.cnitblog.com/blog/530895/201312/17225205-c3b90662c2db4fe082cee05424acf919.jpg)
7. 建立关联:在toolbox中,用鼠标左键单击一下“关系”,然后可以松开鼠标,“关系 ”仍处于选择状态。移动鼠标到设计面板上,当鼠标靠近实体时,鼠标指针会变化成折线。在主实体上按下左键,并拖动到从实体上,松开左键,此时会有一根线产生。就是关联。如下图:
![](http://images.cnitblog.com/blog/530895/201312/17225604-c2ad696d639545aeb30224cf84765457.jpg)
8. 修改Student , Course 之间的关联为多对多(就*代表多个。*对*)。如下图:
![](http://images.cnitblog.com/blog/530895/201312/17230000-da8d729f693941e59de1135748b7d849.jpg)
9. 双击class,student之间的关联,设置如下图:
![](http://images.cnitblog.com/blog/530895/201312/17230413-966bb81158d54ae295d4dc3b66436172.jpg)
10. 在Model First 中,EF不会为我们创建数据库只会创建表。所以我们要事先用SQL server 2012建立空数据库:
![](http://images.cnitblog.com/blog/530895/201312/17231509-b04cac2369584059905c528bc18370d4.jpg)
在edmx设计器上空白地方,右键:“根据模型生成数据库”,进入“生成数据库”向导,建立数据库连接。
![](http://images.cnitblog.com/blog/530895/201312/17232114-4c27e49b70bb4abf9df93778318cd588.jpg)
![](http://images.cnitblog.com/blog/530895/201312/17232312-36e2c208c5cc488c9fc9d06c73f40ef0.jpg)
当连接服务器成功以后,点击:执行脚本。则会在数据库school中生成相应的数据表。
![](http://images.cnitblog.com/blog/530895/201312/17232444-6dcab3eeec9f466a9df7346dcd909476.jpg)
注意:观察生成的数据表:student,course之间是多对多关系,所以会生成一个中间表:studentcourse,主键就是由student,course的主键组合.在student 表中,我们设计了一个ClassID用于外键关联class实体。这种关联在EF中称作:外键关联(有专门的一个外键去和导航属性对应)。EF还支持另外一种关联:独立关联(没有专门的一个外键去和导航属性对应,EF在没我外键的情况下,也可以跟踪管理导航属性)。这里我们按在没有ORM框架的时候,我们采用的传统做法:就是采用外键关联两个实体。
另外,ADO.NET 实体数据模型向导还可以直接使用从现有数据库创建模型,这种方式(Database First)比较简单在此就不提了,根据向导指示就可以了。
Model First方式创建数据库
1.启动VS2010.创建一个Console application(控制台) : 名为:EFModelDemo 如下图:![](http://images.cnitblog.com/blog/530895/201312/17222119-17132a90194a4a06b617090d4f5ba3b8.jpg)
2. 在项目上,右键=》选择“添加->新项目..” 如下图:选择:Ado.net entity data model : 名为:School
![](http://images.cnitblog.com/blog/530895/201312/17222630-950e1e829b834483a75f5e3ec43421af.jpg)
3. 选择“empty model ” 点击完成 .如下图:
![](http://images.cnitblog.com/blog/530895/201312/17222800-5d2e6d2a9a56445eb2969baa9255b530.jpg)
4. 此时会自动打开edmx的设计器界面;如下图:
![](http://images.cnitblog.com/blog/530895/201312/17222946-96718caced99470a973e38f38fb6a484.jpg)
5. 用鼠标拖动“entity(实体) ”到界面设计器上。就会生成一个实体出来。如下图:
![](http://images.cnitblog.com/blog/530895/201312/17224026-197eafc1f5ef4885b17d94fd595fb256.jpg)
如果你想重命名一个实体类,你可以双击实体设计器里的类的名字然后输入一个新的名字。或者,你可以在实体设计器里选择一个实体后在属性窗口里修改这个实体的名字。记住在修改后保存你的实体数据模型。在这个场景后面,实体设计器生成了一系列的C#模型类。你可以在解决方案浏览器窗口里通过打开XXModel.Designer.cs文件看到这些类。别修改Designer.cs里面的代码,因为你的改动会在下一次使用实体设计器的时候会被重新覆写。
如果你只想要扩展在Designer.cs里面的实体类的功能,你可以在单独文件里创建部分类。
6. 给这三个实体增加其它属性:在设计器上点击鼠标右键来添加。默认情况下:属性是string类型的。选中实体中的某一个属性项(如ClassID),然后在属性面板中将其type改为:int32.(因为,它将作为外键与Couse实体中的ID对应,所以确保两者的类型要一样)如下图:
![](http://images.cnitblog.com/blog/530895/201312/17225205-c3b90662c2db4fe082cee05424acf919.jpg)
7. 建立关联:在toolbox中,用鼠标左键单击一下“关系”,然后可以松开鼠标,“关系 ”仍处于选择状态。移动鼠标到设计面板上,当鼠标靠近实体时,鼠标指针会变化成折线。在主实体上按下左键,并拖动到从实体上,松开左键,此时会有一根线产生。就是关联。如下图:
![](http://images.cnitblog.com/blog/530895/201312/17225604-c2ad696d639545aeb30224cf84765457.jpg)
8. 修改Student , Course 之间的关联为多对多(就*代表多个。*对*)。如下图:
![](http://images.cnitblog.com/blog/530895/201312/17230000-da8d729f693941e59de1135748b7d849.jpg)
9. 双击class,student之间的关联,设置如下图:
![](http://images.cnitblog.com/blog/530895/201312/17230413-966bb81158d54ae295d4dc3b66436172.jpg)
10. 在Model First 中,EF不会为我们创建数据库只会创建表。所以我们要事先用SQL server 2012建立空数据库:
![](http://images.cnitblog.com/blog/530895/201312/17231509-b04cac2369584059905c528bc18370d4.jpg)
在edmx设计器上空白地方,右键:“根据模型生成数据库”,进入“生成数据库”向导,建立数据库连接。
![](http://images.cnitblog.com/blog/530895/201312/17232114-4c27e49b70bb4abf9df93778318cd588.jpg)
![](http://images.cnitblog.com/blog/530895/201312/17232312-36e2c208c5cc488c9fc9d06c73f40ef0.jpg)
当连接服务器成功以后,点击:执行脚本。则会在数据库school中生成相应的数据表。
![](http://images.cnitblog.com/blog/530895/201312/17232444-6dcab3eeec9f466a9df7346dcd909476.jpg)
注意:观察生成的数据表:student,course之间是多对多关系,所以会生成一个中间表:studentcourse,主键就是由student,course的主键组合.在student 表中,我们设计了一个ClassID用于外键关联class实体。这种关联在EF中称作:外键关联(有专门的一个外键去和导航属性对应)。EF还支持另外一种关联:独立关联(没有专门的一个外键去和导航属性对应,EF在没我外键的情况下,也可以跟踪管理导航属性)。这里我们按在没有ORM框架的时候,我们采用的传统做法:就是采用外键关联两个实体。
另外,ADO.NET 实体数据模型向导还可以直接使用从现有数据库创建模型,这种方式(Database First)比较简单在此就不提了,根据向导指示就可以了。
相关文章推荐
- Visual 2015创建新项,缺少ADO.NET 实体数据模型的解决方法
- 《MVC+EF》——用DBFirst创建ADO.NET实体数据模型和对象关系映射
- vs2010/vs2012 创建ADO.NET实体数据模型时选择数据库跳出
- vs212创建mvc3项目,添加ADO.NET实体数据模型时产生 XXXX.Desiger.cs 文件为空
- Visual Studio 2012 [ADO.NET 实体数据模型]丢失没有的解决方法
- ADO.NET Entity Framework生成 School 实体数据模型(实体框架快速入门)
- ADO.NET实体数据模型
- Visual Studio 2013 添加新项缺失[ADO.NET 实体数据模型]解决方法
- ADO.NET实体数据模型使用探索1
- 使用ADO.net 实体数据模型遇到的问题
- ADO.NET实体数据模型 在模型中加入外键列【Linq】
- Visual Studio 2010添加新项缺失[ADO.NET 实体数据模型]解决方法
- vs2015 新建ADO.NET 实体数据模型向导,选择MySql数据库连接后点击下一步就闪退
- vs2010 下的ado.net 实体模型创建数据库时datetime 类型的问题
- ADO.NET实体数据模型详细介绍
- 大家好ado.net 实体数据模型 怎么支持其他数据库?
- [ADO.NET 实体数据模型][增删该查]
- VS中添加新项 数据选项卡下没有ADO.NET实体数据模型解决方案
- ADO.NET实体数据模型
- Visual Studio 2010添加新项缺失[ADO.NET 实体数据模型]解决方法