EF的CRUD
来源:互联网 发布:手机淘宝购物车闪退 编辑:程序博客网 时间:2024/05/21 06:58
已经知道EF就是一个可以使得编程人员用面向对象的思想操作数据库的框架,那么在最初学习SQL的时候我们就知道对数据库的操作就是增删改查,万变不离其宗。EF也是操作数据库的当然也就是要对数据库实现增删改查(称为CRUD)而ADO.net、EF都是一种方式,还有就是Linq也可以不适用SQL语句就实现对数据库的CRUD。现在我们主要学习的就是EntityFrameWork到底是怎么进行的。
在VS中使用“ADO.net数据实体模型”后生成的.edmx文件下会有一个后缀为.Context.tt的文件,其下的.Context.cs里类包含了在操作数据库时的类,如下的这段代码是就是它的代码
具体在使用时
如上就是实现简单的增删改查,那么具体的代码有是怎么样的
<span style="font-size:18px;">#region 新增 add() /// <summary> /// 1.0新增 /// </summary> public void add() { //1.1首先要创建增加到数据库实体对象 T_Book book = new T_Book(){ bookID="10",bookName="yxf",caID="1",IsBorrowed=false, publishCompany="yxf",status=true,writer="yxf",ISBN="789" }; //1.2通过EF中的Add()方法将对象新增到数据库 db.T_Book.Add(book);//T_Book 是DbSet类型的,其中包含了Add、attach、where等方法 db.SaveChanges();//保存修改 Console.Write("保存成功"); } #endregion</span>
<span style="font-size:18px;">#region 删除 Delete() //2.0删除 public void Delete() { //2.1查找要删除的对象 T_Book Dbook = new T_Book() { bookName="yxf"}; //2.2将要删除的对象附加到EF中 db.T_Book.Attach(Dbook); //2.3标记为删除 db.T_Book.Remove(Dbook); //2.4保存 db.SaveChanges(); } #endregion</span>
<span style="font-size:18px;">#region 修改 Edit() ///<summary> ///3修改 /// </summary> public void Edit() { //3.1、查出要修改的对象,表示bookID为1的书 T_Book NBook = db.T_Book.Where(book =>book.bookID=="1").FirstOrDefault(); //3.2、修改内容,直接的修改查出的对象的属性即可 NBook.bookName = "杨晓菲"; //3.3、保存 db.SaveChanges(); } #endregion</span>
最后就是查询,因为EF最后还是要通过ADO.net生成SQL语句才能操作数据库,查询就需要确定条件,所以讲查询分为及时查询和延迟的(也称延迟加载)。
延迟加载:
1、主要是为了确定查询的条件,在生成SQL语句的时候要确定查询的条件,所以延迟加载只有在真正的查询的时候才生成SQL语句,如下列
<span style="font-size:18px;">System.Data.Entity.Infrastructure.DbQuery<T_Book>dbquery = db.T_Book.Where(book =>book.bookName=="yxf").OrderBy(book=>book.bookID)as System.Data.Entity.Infrastructure.DbQuery<T_Book>;//这里的where和OrderBy都是查询的条件,在这里都只是在拼接条件</span>
T_Book book1 = dbquery.FirstOrDefault();//在用这个对象的时候才生成SQL语句
2、针对外键的延迟加载,有外键的表在使用时,那个外键所对应的表相当于是当前表的一个属性,在进行查询时如果只是用到当前表中的内容就只查当前表只有用到外键所在表的属性时才查另一张表。
有时需要同时的查两张表,在使用SQL时需要使用Inner Join,在EF中直接使用Include方法即可。
小结:
EF中增删改查的实现都是使用的方法,而其中查询的语句又有点类似SQL语句,查询需要条件,为了能够生成出正确的SQL语句又有了延迟加载,而表的连接查询使用方法Include就可以了,相比起使用SQL语句EF的编码确实简单了很多。
- EF的CRUD
- EF CRUD
- MVC中使用EF(2):实现基本的CRUD功能
- EF泛型封装CRUD
- EF Codefirst 多对多关系 操作中间表的 增删改查(CRUD)
- Angular5,使用EF和WEB API进行库存管理的ASP.NET Core CRUD
- 【EF操作】——CRUD操作步骤
- EF进阶篇(二)——CRUD
- 【EF】 EF的一些错误和解决办法
- EF 小数位的保留
- 优化EF的性能
- EF的datetime2类型
- EF的高可用性
- EF的使用建议
- EF的edmx文件
- EF的操作
- EF的分析
- 我的EF功能
- 字符串大小写转换java
- 触发器与存储过程的区别
- hash算法 (hashmap 实现原理)
- BAT内推之阿里内推介绍
- 【MySql】赶集网mysql开发36条军规
- EF的CRUD
- 深入解析AsyncTask(doInBackground不工作)
- EMD学习笔记
- oracle 存储过程 游标
- Android_关于Toast重复显示解决方法
- [DLX] hust 1017 Exact cover
- wax
- JS打乱数组最高效的方法
- struct sockaddr {