Model First:创建实体数据模型(ADO.NET 实体数据模型)
Microsoft Entity Framework是一个对象关系映射工具(Object Relational Mapping ,O/RM)工具。它可以让你从一个数据库自动地生成数据接入层。实体框架免去了你手工创建数据接入层的乏味工作。ADO.NET 实体数据模型可以映射数据库与数据表,也可以映射模型类。它是关系数据库与面向对象系统的桥梁,闲话少说,就让我们举个简单的例子来解析它吧!
Model First方式创建数据库
1.启动VS2010.创建一个Console application(控制台) : 名为:EFModelDemo 如下图:
2. 在项目上,右键=》选择“添加->新项目..” 如下图:选择:Ado.net entity data model : 名为:School
3. 选择“empty model ” 点击完成 .如下图:
4. 此时会自动打开edmx的设计器界面;如下图:
5. 用鼠标拖动“entity(实体) ”到界面设计器上。就会生成一个实体出来。如下图:
如果你想重命名一个实体类,你可以双击实体设计器里的类的名字然后输入一个新的名字。或者,你可以在实体设计器里选择一个实体后在属性窗口里修改这个实体的名字。记住在修改后保存你的实体数据模型。在这个场景后面,实体设计器生成了一系列的C#模型类。你可以在解决方案浏览器窗口里通过打开XXModel.Designer.cs文件看到这些类。别修改Designer.cs里面的代码,因为你的改动会在下一次使用实体设计器的时候会被重新覆写。
如果你只想要扩展在Designer.cs里面的实体类的功能,你可以在单独文件里创建部分类。
6. 给这三个实体增加其它属性:在设计器上点击鼠标右键来添加。默认情况下:属性是string类型的。选中实体中的某一个属性项(如ClassID),然后在属性面板中将其type改为:int32.(因为,它将作为外键与Couse实体中的ID对应,所以确保两者的类型要一样)如下图:
7. 建立关联:在toolbox中,用鼠标左键单击一下“关系”,然后可以松开鼠标,“关系 ”仍处于选择状态。移动鼠标到设计面板上,当鼠标靠近实体时,鼠标指针会变化成折线。在主实体上按下左键,并拖动到从实体上,松开左键,此时会有一根线产生。就是关联。如下图:
8. 修改Student , Course 之间的关联为多对多(就*代表多个。*对*)。如下图:
9. 双击class,student之间的关联,设置如下图:
10. 在Model First 中,EF不会为我们创建数据库只会创建表。所以我们要事先用SQL server 2012建立空数据库:
在edmx设计器上空白地方,右键:“根据模型生成数据库”,进入“生成数据库”向导,建立数据库连接。
当连接服务器成功以后,点击:执行脚本。则会在数据库school中生成相应的数据表。
注意:观察生成的数据表:student,course之间是多对多关系,所以会生成一个中间表:studentcourse,主键就是由student,course的主键组合.在student 表中,我们设计了一个ClassID用于外键关联class实体。这种关联在EF中称作:外键关联(有专门的一个外键去和导航属性对应)。EF还支持另外一种关联:独立关联(没有专门的一个外键去和导航属性对应,EF在没我外键的情况下,也可以跟踪管理导航属性)。这里我们按在没有ORM框架的时候,我们采用的传统做法:就是采用外键关联两个实体。
另外,ADO.NET 实体数据模型向导还可以直接使用从现有数据库创建模型,这种方式(Database First)比较简单在此就不提了,根据向导指示就可以了。
Model First:创建实体数据模型(ADO.NET 实体数据模型)的更多相关文章
- 《MVC+EF》——用DBFirst创建ADO.NET实体数据模型和对象关系映射
转载于:http://blog.csdn.net/zhoukun1008/article/details/50528145 现在越来越喜欢MVC了,不光是因为ITOO中用到了他,而是因为它里面包含了很 ...
- Visual 2015创建新项,缺少ADO.NET 实体数据模型的解决方法
现在的某度查资料真的很麻烦,突然我自身的VS2015创建EF的时候找不到 ADO.NET 实体数据模型,但是使用CodeFrist是可以生成数据表的.所有特别郁闷. 打开界面如下 某度半天,都没有查出 ...
- vs212创建mvc3项目,添加ADO.NET实体数据模型时产生 XXXX.Desiger.cs 文件为空
vs212创建mvc3项目,发现添加ADO.NET实体数据模型时,产生StoreDB.Desiger.cs文件为空 产生StoreDB.Desiger.cs文件为空 原因是,在vs2012中,添加AD ...
- Visual Studio2017中如何让Entity Framework工具【ADO.NET实体数据模型】支持MYSQL数据源
熟悉Entity Framework应该对以下图片不陌生,他就是ADO.NET实体数据模型向导:可以将数据库的表自动生成模型类,或者创建Code First的模型文件. 但是这个模型向导默认只显示微软 ...
- ADO.NET实体数据模型使用探索1
今天研究了下ADO.NET实体数据模型,想写个关于两张有外键关系的增改删查,以此来稍增加点难度. 编程环境:vs2010+sql2005 1.在SQL2005下建立三张表:学生信息表Student(S ...
- 连接SQLite 创建ADO.net实体类
0.开发环境 win10,vs2013-x64 1.安装: sqlite-netFx451-setup-bundle-x86-2013-1.0.102.0.exe 注意事项:选在VisualStudi ...
- ADO.NET实体数据模型中关于数据库字段默认值的处理
无论是Visual Studio 2010或者2013内置的ADO.NET实体数据模型都有一个小问题:数据库中有些字段已设置了默认值,但ADO.NET实体数据模型工具并不会自动进行设置. 这时需要手工 ...
- Visual Studio2017中如何让ADO.NET实体数据模型[EntityFramework]支持MariaDB&MySQL数据源
近期由于工作需要,需要重新修改设计系统的ADO.NET实体数据模型.edmx文件中间,在完成实际中途遇到一些实际使用问题,特此记录. 1. Visual Studio 2017 无法以实体设计模式打开 ...
- EFCore 通过实体Model生成创建SQL Server数据库表脚本
在我们的项目中经常采用Model First这种方式先来设计数据库Model,然后通过Migration来生成数据库表结构,有些时候我们需要动态通过实体Model来创建数据库的表结构,特别是在创建像临 ...
随机推荐
- jquery 字符串转json
这里考虑的都是服务器返回JSON形式的字符串的形式 代码如下: var data=" { root: [ {name:'1',value:'0'}, {name:'6101',value:' ...
- asp.net实现GZip压缩和GZip解压
最近在开发一个网站doc.115sou.com,使用到了GZip压缩技术,经过多次搜索找到asp.net中用GZip对数据压缩和解压缩非常方便,当我第一次拿到这个类的时候却感觉很迷茫,无从下手.主要是 ...
- ionic preparing for ios 9
http://blog.ionic.io/preparing-for-ios-9/ Preparing for iOS 9 Tweet By Max on September 12, 2015 i ...
- apache开源项目 -- VXQuery
Apache VXQuery 是一个兼容标准的 XML 查询处理器的实现.主要适合非常大量的 XML 数据处理. 参考: http://www.apache.org/
- Java [leetcode 3] Longest Substring Without Repeating Characters
问题描述: Given a string, find the length of the longest substring without repeating characters. For exa ...
- 【C#学习笔记】退出程序
1.this.Close(); 只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出: 2.Application.Exit(); 强制所有消息中 ...
- 漂亮灵活设置的jquery通知提示插件toastr
toastr是一款非常棒的基于jquery库的非阻塞通知提示插件,toastr可设定四种通知模式:成功,出错,警告,提示,而提示窗口的位置,动画效果都可以通过能数来设置,在官方站可以通过勾选参数来生成 ...
- 底部菜单栏(一) TabHost实现
需求:使用TabHost实现底部菜单栏: 效果图: 实现分析: 1.目录结构: 代码实现: 1.activity_main.xml <?xml version="1.0" e ...
- Spring AOP (上)
工作忙,时间紧,不过事情再多,学习是必须的.记得以前的部门老大说过:“开发人员不可能一天到晚只有工作,肯定是需要自我学习.第一:为了更充实自己,保持进步状态.第二:为了提升技术,提高开发能力.第三:保 ...
- Android 引用library project
1.如何将一个android工程作为库工程(library project) library project是作为jar包被其它android工程使用的,首先它也是普通的android工程.然后: 1 ...