EF中的增删改查

               

 

   在上一篇中简单的介绍了一下有关EF的一些概念,都是小编的一些个人理解,懂的不多,想深入学习的可以从网上查看一些其他资料。

   下面紧接着上一篇所说,来从代码上看一下EF容器是如何实现与后台数据库之间的增删改查的。


   1.EF包装类

   什么是EF包装类呢?举个例子,我们平时用SQL语句写增删改查时,用的都是一些Insert、Update、Delete等语句来实现增删改查,所以我们把放到EF容器的东东也要做一个标签,来指明这个东东是要添加、更新、还是要删除呢。

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>



           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.****.net/jiangjunshow