在EF的上一篇博客中已经对它的增删改查有了一个简单的了解。当中的改动过程是先要把要改动的内容查出来然后再进行改动、保存。它详细的过程是这种
首先当在运行查询语句的时候“EF数据上下文”会先訪问数据库进行查询,然后将结果以对象的方式返回到“EF数据上下文中”,EF数据上下文相当于是一个容器,在对象进入到容器中的时候在对象的外側会再进行包装如上图所看到的。这样返回的对象会以“EF包装类对象”存在。同一时候这个对象会有一个标识,当中的每一个属性也都有一个标识,当对其属性进行改动的时候属性标识就会改变,在数据库中就是依据这些标识生成相应的SQL语句的。
可是这样比較麻烦,每次改动前都须要先进行查询,依据以上的原来能够改进出第二种方法。
#region改动改进。不须要先进行查询 Edit1() ///<summary> ///改动改进 /// </summary> public void Edit() { //1、实例化要改动的对象,注意这里属性的值是目标值即改动完以后的值 T_Book book = new T_Book() {bookID="1",bookName="红楼梦" }; //2、将对象增加到EF容器中 DbEntityEntry<T_Book> entry = db.Entry<T_Book>(book); //3、将整个对象标识为没有改动过 entry.State = System.Data.EntityState.Unchanged; //4、对要改动的属性的标识进行改动,这是的对象的标识也会改变 entry.Property("bookName").IsModified = true; //5、保存 db.SaveChanges(); //在进行SaveChanges()的时候,会依据对象的状态、对象中属性的状态生成SQL语句 } #endregion
相同的原理这样的方法能够再增、删中用。
小结
EF是第一次接触。非常多东西陌生可是又熟悉。它还是对数据库的增删改查仅仅是操作方法是建立在面向对象的基础上的。自己看的视频中有非常多原理老师讲的也比較easy懂得,关于这样原理自己认为研究是有必要的由于结合近期学习和使用AJAX的情况懂得原理了操作起来更easy。并且灵活一些。