Entity Framework(EF的Model First方法)
EntityFramework,是Microsoft的一款ORM(Object-Relation-Mapping)框架。同其它ORM(如,NHibernate,Hibernate)一样,
一是为了使开发人员以操作对象的方式去操作关系型数据表。
二是为了屏蔽底层不同厂商的数据库,开发人员面向ORM框架编写数据的CRUD(Create,Retrieve,Update,Delete)操作,再由ORM框架将这些操作翻译成不同数据库厂商的语言。
从EF 4.X开始支持三种构建方法:1. Database First方法。2.Model First方法。3.Code First 方法。

本次测试以Visual Studio2013 / MS Sql Server2012 / Entity Framework 6.X 测试EF
Model First Demo (Models修改了,中间不能直接映射数据库)
【Model First 导航属性:不需要自己创建,是表之间有了关联之后,自己就会创建出来】
//注意:更新Model到数据库时会删除原来表格和数据,再创建新的表格
关键:关系的创建
1: 创建空模型的实体数据模型,
2: 创建实体、关系
3: 关系包括:1:1,1:n,m:n (建议不要使用1:1,性能低(不会延迟加载,添加时必须同时创建两个对象),可以使用1:m的方式进行代替处理)
关系m:n,有一张中间表,左:1:m 关系,右:1:n 关系,在数据库中存在这张中间表,在edmx中不存在(可以使用导航属性操作m:n关系)
4: 可以生成导航属性,也可以不生成
1:打开SQLServer2012,使用下面SQL文本创建MyFirstModelFirstEF数据库(Model First EF不会帮我们创建数据库,只会帮我们创建表。所以我们要事先把数据库建立好)
create database MyFirstModelFirstEF
on primary
(
name='MyFirstModelFirstEF.mdf',
--修改为自己电脑上SQL DB路径
filename='D:\yangZ_MSSQL\MyFirstModelFirstEF.mdf',
size=5mb,
maxsize=100mb,
filegrowth=10%
)
log on
(
name='MyFirstModelFirstEF_log.ldf',
--修改为自己电脑上SQL DB路径
filename='D:\yangZ_MSSQL\MyFirstModelFirstEF_log.ldf',
size=2mb,
maxsize=100mb,
filegrowth=5mb
)
go
2:新建ConsoleApplication应用程序

3:在EFDataBaseFirstDemo上 右键-->新建-->新建项-->数据-->ADO.NET实体数据模型,选择空模型,然后点击完成

4:此时会自动打开**.edmx设计界面(若没有打开,直接在项目解决方案中,双击**.edmx文件)


5:通过edmx设计界面, 我们把上次Database First Demo中的CustomerInfo/OrderInfo表格生成出来,如下图所示,并导入数据库

6:在edmx设计页面,一种可以通过工具箱,拖拽设计页面,另外一种直接右键-->新增来设计表格,本次直接通过右键-->新增来设计表格
6.1:设计CustomerInfo表格,在**.edmx设计界面空白处,直接右键-->新增-->实体,填写相关内容(在这里可以设置主键id为Identity,默认为自增长为1,这个在Model First设计界面没办法修改默认自增长值)

此时,选中id属性,鼠标右键-->属性(或者直接F4),可以打开属性界面,在属性界面可以继续修改刚刚创建的字段

6.2:继续新增customerName string类型/customerDate datetime类型
选中CustomerInfo设计界面,右键-->新增-->标量属性,修改name==customerName,选中刚刚新增的customerName字段,修改属性(F4)
关于MSSQL Server数据类型介绍参考:http://www.cnblogs.com/Dr-Hao/p/5197238.html


6.3:新增customerDate datetime类型字段,右键-->新增-->标量属性,修改name==customerDate,选中刚刚新增的customerDate字段,修改属性(F4)
关于MSSQL Server数据类型介绍参考:http://www.cnblogs.com/Dr-Hao/p/5197238.html

至此CustomerInfo数据库字段已经创建完毕,OrderInfo表格和字段(id[int],orderName[nvarchar(100)],customerId[int,foreign key])创建类似

6.4:把CustomerInfo和OrderInfo表格建立关联关系(在**.edmx空白处,右键单击-->新增-->关联)


最后整体**.edmx实体图显示如下:

7:此时,数据库中没有数据表。我们在edm设计器上空白地方,右键-->根据模型生成数据库
[Model First EF不会帮我们创建数据库,只会帮我们创建表。所以我们要事先把数据库建立好]


点击下一步,如下图,生成对应的SQL文本

点击完成(有可能出现下面的警告),点击确定之后,如下图所示:


当连接服务器成功以后,点击:执行脚本。则会在数据库MyFirstModelFirstEF中生成相应的数据表



最后ModelFirstEFDemo整体结构如下所示:

最后在ConsoleApplication中做一个增加数据的Demo
DbContext context = new Model1Container(); //使用导航属性 新增CustomerInfo和OrderInfo数据
CustomerInfo customer = new CustomerInfo()
{
customerName = "ModelFirstTestOne",
customerDate = DateTime.Now
};
customer.OrderInfo.Add(new OrderInfo()
{
orderName = "ModelFirstTestTwo"
});
context.Set<CustomerInfo>().Add(customer);
context.SaveChanges();
此时数据库数据如下所示:

参考文章:
ASP.NET MVC EF直接更新数据(不需查询):http://www.cnblogs.com/Dr-Hao/p/5255630.html
ASP.NET EF(LINQ/Lambda查询):http://www.cnblogs.com/Dr-Hao/p/5356928.html
ASP.NET EF 使用LinqPad 快速学习Linq:http://www.cnblogs.com/Dr-Hao/p/5357112.html
Ps:使用EF Model First时,若修改Model结构,或者字段,需要在**.edmx中做如下操作
重复第7步骤:此时,数据库中没有数据表。我们在edm设计器上空白地方,右键-->根据模型生成数据库 [Model First EF不会帮我们创建数据库,只会帮我们创建表。所以我们要事先把数据库建立好]
注意:更新Model到数据库时会删除原来表格和数据,再创建新的表格
即为:原来表格中的数据都会删除掉,然后重新创建新的表格(对于数据量比较大的表格,不能这样操作),可以通过【手动修改数据库和edmx文件】
Entity Framework(EF的Model First方法)的更多相关文章
- Entity Framework(EF的Code First方法)
EntityFramework,是Microsoft的一款ORM(Object-Relation-Mapping)框架.同其它ORM(如,NHibernate,Hibernate)一样, 一是为了使开 ...
- Entity Framework(EF的Database First方法)
EntityFramework,是Microsoft的一款ORM(Object-Relation-Mapping)框架.同其它ORM(如,NHibernate,Hibernate)一样, 一是为了使开 ...
- 【极力分享】[C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例【转载自https://segmentfault.com/a/1190000004152660】
[C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例 本文我们来学习一下在Entity Framework中使用Cont ...
- ASP.NET Core 开发-Entity Framework (EF) Core 1.0 Database First
ASP.NET Core 开发-Entity Framework Core 1.0 Database First,ASP.NET Core 1.0 EF Core操作数据库. Entity Frame ...
- Visual Studio Entity Framework (EF) 生成SQL 代码 性能查询
Visual Studio Entity Framework (EF) 生成SQL 代码 性能查询 SQL 中,有SQL Server Profiler可以用来查询性能以及查看外部调用的SQL ...
- ASP.NET Core 开发 - Entity Framework (EF) Core
EF Core 1.0 Database First http://www.cnblogs.com/linezero/p/EFCoreDBFirst.html ASP.NET Core 开发 - En ...
- [转]Using Entity Framework (EF) Code-First Migrations in nopCommerce for Fast Customizations
本文转自:https://www.pronopcommerce.com/using-entity-framework-ef-code-first-migrations-in-nopcommerce-f ...
- ADO.NET Entity Framework(EF)
ylbtech-Miscellaneos: ADO.NET Entity Framework(EF) A,返回顶部 1, ADO.NET Entity Framework 是微软以 ADO.NET 为 ...
- Entity Framework公共的增删改方法
using System; using System.Collections.Generic; using System.Data.Entity; using System.Data.Entity.I ...
随机推荐
- Task的运行原理和工作窃取
在net4.0以前,当调用ThreadPool.QueueUserWorkItem方法往线程池中插入作业时,会把作业内容(其实就是一个委托)放到线程池中的一个全局队列中,然后线程池中的线程按照先进先出 ...
- Spring Boot 推荐的 Java 配置
在学 Spring 的过程中 , 配置文件慢慢的被注解所替代 , 现在 Spring Boot 更是推荐使用 Java 配置完全来代替配置文件 . 需要使用到的注解有 : Bean 相关 : @Con ...
- Java多线程(五) —— 线程并发库之锁机制
参考文献: http://www.blogjava.net/xylz/archive/2010/07/08/325587.html 一.Lock与ReentrantLock 前面的章节主要谈谈原子操作 ...
- 多进程编程之守护进程Daemonize
1.守护进程 守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务.很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭.另一些只在需要的时候才启动,完成任务后就自动结束. ...
- 【算法】Tarjan大锦集
Task1 Description 一位冷血的杀手潜入 Na-wiat,并假装成平民.警察希望能在 N 个人里面,查出谁是杀手. 警察能够对每一个人进行查证,假如查证的对象是平民,他会告诉警察,他认识 ...
- 51nod 1678 lyk与gcd | 容斥原理
51nod 200题辣ψ(`∇´)ψ !庆祝! 51nod 1678 lyk与gcd | 容斥原理 题面 这天,lyk又和gcd杠上了. 它拥有一个n个数的数列,它想实现两种操作. 1:将 ai 改为 ...
- 使用IPMI控制/监控Linux服务器
1 IPMI简述 IPMI提供了很多丰富功能,我使用的功能,说得大白话一点,就是: 1.获取本设备的硬件信息:包括CPU和主板的温度.电压.风扇转速. 2.在设备A上,通过命令,控制远程设 ...
- 【django基础之ORM,增删改查】
一.定义 1.什么是ORM? ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候, ...
- React事件传递参数
<button onClick={(ev) => {this.handleClick(ev,arg1,arg2,...)}} 用箭头函数,注意第一个参数一定要是事件参数.
- 解题:POI 2007 Tourist Attractions
题面 事实上这份代码在洛谷过不去,因为好像要用到一些压缩空间的技巧,我并不想(hui)写(捂脸) 先预处理$1$到$k+1$这些点之间相互的最短路和它们到终点的最短路,并记录下每个点能够转移到时的状态 ...