Entity Framework(二)
1、 ORM :Object Relation Mapping ,通俗说:用操作对象的方式来操作数据库。
2、 插入数据不再是执行Insert,而是类似于 Person p=new Person() ; p.Age=3;p.Name="wang" ;db.save(p);这样的做法;
3、ORM工具有很多Dapper、PetPoco、NHibermate,首推Entity Framework
4、EF底层还是多ADO.Net的封装.
5、使用EF进行数据库开发的时候有两个东西建立:建数据库,建模型类。根据这两种创建的先后顺序有EF的三种创建方法:
(1) Database First(数据库优先):先创建数据库表,然后自动生成EDM文件,EDM文件生成模型类
(2)Model First (模型优先):先创建Edm文件,Edm文件自动生成模型类和数据库;
(3)Code First(代码优先):自己写模型类,然后生成数据库,没有EDM。
6、EF安装
(1)基础阶段用控制台项目,使用Nuget安装EntityFramework 会自动再APP'config 中增加两个EntityFramework相关的配置;
(2)在web.cong中配置链接字符串:
<connectionStrings><add name="connstr" connectionString=" Data Source=.; Initial Catalog=Test2; User Id=sa; Password=123; " providerName="System.Data.SqlClient" /></connectionStrings>
7、 EF简单DataAnnotations实体配置
(1)数据库创建表:T_Persons,有Id(主键,自动增长) ,Name,CreateDateTime;
(2)创建Person类
[Table("T_Persons")] //因为和表名不一样,所以要使用Table标注;public class Person{public long Id { get; set; }public string Name { get; set; }public DateTime CreateDateTime { get; set; }}
因为EF约定的主键是Id,所以不用再特殊指定Id为主键,如果非要指定就用[Key] .因为字段名和属性名一样,所以不用再特殊指定关系,如果需要[Column("Name")].
必填字段标注[Required]、字段长度[MaxLength(5)] 、可空字段 int? 、如果字段再数据库中有默认值,则要再属性上标注[DatabaeGenerated] 注意实体类要写成public ,否则后面会有麻烦;
(3)创建 DbContext 类(模型类、实体类)
public class TestDbContext:DbContext{public TestDbContext():base("name=connstr")//name=connstr 表示使用连接字符串中名字为connstr的数据库 {}public DbSet<Person> Persons { get; set; }}
(4)测试:
static void Main(string[] args){using (TestDbContext ctx = new TestDbContext()){Person p1 = new Person(){ CreateDateTime = DateTime.Now,Name = "wang"};ctx.Persons.Add(p1);ctx.SaveChanges();}}
注意: MyDbConnect 对象是否需要using有争议,不using也没事,每次用的时候new MyDbConnect就行,不用共享同一实例,共享反而会有问题。saveChanges()才会更新到数据库中。EF开发团队都说要using,很多人不用,只是想利用LazyLoad而已,但是那样做是违反分层的原则的。习惯用using
8、 EF模型的两种配置方式:
EF中的模型类有两种配置方式:DataAnnotations、FluentAPI两种。上面这种在模型类上[Table"T_Person")]、[Column("Name")]这种方式就叫 DataAnnotations。这种方式方便,但是耦合度太高,一般的类最好是POCO(就是一个普通的类),不符合大项目开发的要求。微软推荐使用FluentAPI,因此主要用FluentAPI
转载于:https://www.cnblogs.com/fuyouchen/p/9385463.html
Entity Framework(二)相关推荐
- MVC用非Entity Framework将数据显示于视图(二)
这篇<MVC用非Entity Framework将数据显示于视图> http://www.cnblogs.com/insus/p/3364235.html 也算是MVC视图显示数据库的数据 ...
- Entity Framework 4.1 DbContext使用记之二——如何玩转本地实体? DbSet.Local属性的使用与实现...
说好为大家带来一系列的文章,现在就写第二篇.开始之前,再啰嗦两句,EF4.1 RTW版本已经发布:http://www.microsoft.com/downloads/en/details.aspx? ...
- Entity Framework技巧系列之二 - Tip 6 - 8
提示6. 如何及何时使用贪婪加载 什么时候你需要使用贪婪加载? 通常在你的程序中你知道对查询到的实体将要进行怎样的操作. 例如,如果你查询一个订单以便为一个客户重新打印,你知道没有组成订单的项目即产品 ...
- C#综合揭秘——Entity Framework 并发处理详解
引言 在软件开发过程中,并发控制是确保及时纠正由并发操作导致的错误的一种机制.从 ADO.NET 到 LINQ to SQL 再到如今的 ADO.NET Entity Framework,.NET 都 ...
- Entity Framework的启动速度优化
最近开发的服务放到IIS上寄宿之后,遇到一些现象,比如刚部署之后,第一次启动很慢:程序放置一会儿,再次请求也会比较慢.比如第一个问题,可以解释为初次请求某一个服务的时候,需要把程序集加载到内存中可能比 ...
- 关于Entity Framework自动关联查询与自动关联更新导航属性对应的实体注意事项说明...
一.首先了解下Entity Framework 自动关联查询: Entity Framework 自动关联查询,有三种方法:Lazy Loading(延迟加载),Eager Loading(预先加载) ...
- 使用EF框架实现MVC的增删改查功能!!!Entity Framework
一.什么是EF? ADO.NETEntity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案.ADO.NET Entity Fram ...
- 【配置映射】—Entity Framework实例详解
前两篇博文中的配置属性和配置关系都是配置映射,配置属性是属性的映射,配置关系式关系的映射,本篇从讲讲实体的映射. 首先,配置实体映射到表,使用ToTable方法,它接受两个参数,第一个参数是表的名称, ...
- 【查询】—Entity Framework实例详解
Entity Framework 查询使用集成查询,简称LINQ.LINQ是一个查询框架,并不限于Entity Framework使用,同样不限于数据库.LINQ Provider 负责将LINQ查询 ...
最新文章
- mongoDB 介绍(特点、优点、原理)
- 云serverlinux又一次挂载指定文件夹(非扩充)
- 麦克风阵列音频检查方法和标准
- 怎么用java ee编程_Java EE应用程序入门 - 编程入门网
- 东北师范大学计算机科学与技术录取分数线,东北师范大学计算机科学与技术专业2015年在河南理科高考录取最低分数线...
- virsh命令 查看虚拟机镜像_kvm虚拟机操作相关命令及虚拟机和镜像密码修改
- (转)基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用
- 团队协作项目——SVN的使用
- serialVersionUID干嘛用的?
- PL/SQL学习笔记(二)
- 用c#创建支持多语言的WinForm应用程序 .
- webstorm设置中文界面
- 三菱5uplc伺服电机指令_2020山东三菱PLCFX1S30MT回收回收价格公道
- listview优化几种写法(原创)
- win8删除计算机管理员权限,win8.1系统如何删除administrator账户
- 促销方式脑图(转载图灵学院)
- N32926 24小时连续测试720p, h.264 IPCAM功能,为什么基本不发热呢?
- Android集成高德地图
- 为华生物COOH-PEG-MAL羧基-聚乙二醇-马来酰亚胺的简介及应用说明
- 《富爸爸穷爸爸》中提及的经典书籍
热门文章
- 中国电子学会scratch等级考试二级
- 【原型设计】第五节:Axure RP9 交面交互的使用说明 02 显示隐藏元素
- 我的世界1.6.2 java_我的世界Java版1.16.2
- VSCode 代码风格统一设置eslint + stylelint
- Python笔记-房贷计算(本息和本金,每月还利息和每月还本金)及作图对比
- Java笔记-对称加密AES的使用
- Qt工作笔记-对Qt工作线程的进一步理解
- JS判断视频Video的播放、暂停、结束完成及获取长度事件监听处理
- java web 分页技术_javaweb分页的后端实现
- 输入 vscode_【Python技术入门2】Python集成开发环境VSCode搭建