标签:
在上一篇中简单的介绍了一下有关EF的一些概念,都是小编的一些个人理解,懂的不多,想深入学习的可以从网上查看一些其他资料。
下面紧接着上一篇所说,来从代码上看一下EF容器是如何实现与后台数据库之间的增删改查的。
1.EF包装类
什么是EF包装类呢?举个例子,我们平时用SQL语句写增删改查时,用的都是一些Insert、Update、Delete等语句来实现增删改查,所以我们把放到EF容器的东东也要做一个标签,来指明这个东东是要添加、更新、还是要删除呢。
正如上图所示就是这么简单的操作,就完成了对数据的增删改查。下面来看一下增删改查的Demo。
2.EF添加和删除操作
<span style="font-family:SimSun;font-size:18px;"> TestEntities db = new TestEntities(); /// <summary> /// 添加操作 /// </summary> public void Add() { //创建要添加的实体 tree tree = new tree() { pName = "第一条数据", subject = "测试" }; //创建一个EF容器对象,并获取当前实体对象的状态管理对象 DbEntityEntry<tree> entry = db.Entry<tree>(tree); //为要添加的对象加上添加的标签 entry.State = System.Data.EntityState.Added; //执行添加操作 db.SaveChanges(); } /// <summary> /// 删除操作 /// </summary> public void Delete() { //创建要添加的实体 tree tree = new tree() { pName = "第一条数据", subject = "测试" }; //创建一个EF容器对象,并获取当前实体对象的状态管理对象 DbEntityEntry<tree> entry = db.Entry<tree>(tree); //为要添加的对象加上删除的标签 entry.State = System.Data.EntityState.Deleted; //执行删除操作 db.SaveChanges(); }</span>
通过上述操作,就通过EF实现了添加和删除的操作。其实还有另外一种写法,原理基本上是一致的。
<span style="font-family:SimSun;font-size:18px;"> TestEntities db = new TestEntities(); /// <summary> /// 添加操作 /// </summary> public void Add() { //创建要添加的实体 tree tree = new tree() { pName = "第一条数据", subject = "测试" }; //此语句相当于为该对象加上添加的标签 db.tree.Add(tree); //执行添加操作 db.SaveChanges(); } /// <summary> /// 删除操作 /// </summary> public void Delete() { //创建要添加的实体 tree tree = new tree() { pName = "第一条数据", subject = "测试" }; //先把要删除的实体放置到容器里面 db.tree.Attach(tree); //然后打上要删除的标签 db.tree.Remove(tree); //执行删除操作 db.SaveChanges(); } </span>
3.查询操作
有了上述的添加和删除,下面来看一下查询的操作。
有关于EF的查询操作,太多了,就好比我们平时写的SQL语句一样,可以查询出各种条件的数据。
因为EF上下文里的 DBSet<T> 里的 标准查询运算符 方法,来自于 System.Linq.Queryable 里给 IQueryable接口 添加的扩展方法。而看一下Queryable类中的方法的话,你会大吃一惊,太强大了,将近有200多个查询的方法供我们使用,下面小编只列举一下简单的查询方法。
<span style="font-family:SimSun;font-size:18px;"> /// <summary> /// 查询数据 /// </summary> public void Find() { //采用DbQuery接口中方法,来查询数据 DbQuery<tree> info = db.tree as DbQuery<tree>; //获得查询出来的数据 tree tree = info.FirstOrDefault(); Console.WriteLine(tree.pName); }</span>
4.EF中的更新操作
如果我们用SQL语句来写更新的话,用到那个字段就更新那个字段,而在EF中还是采用EF包装类的方法,来为我们要修改的类打上修改的标签,然后更新到数据库中。
<span style="font-family:SimSun;font-size:18px;"> TestEntities db = new TestEntities(); /// <summary> /// 更新操作 /// </summary> public void Update() { //编辑要更新的实体的实体 tree tree = new tree() { pName = "第一条数据", subject = "测试" }; //将对象添加到EF容器中 DbEntityEntry entry = db.Entry<tree>(tree); //先设置对象的包装类型为Unchanged entry.State = System.Data.EntityState.Unchanged; //为要更新的字段打上更新的标签 entry.Property("pName").IsModified = true; entry.Property("subject").IsModified = true; //一次性的更新操作 db.SaveChanges(); }</span>
标签:
原文地址:http://blog.csdn.net/luckyzhoustar/article/details/43236149