在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是第一次接触,很多东西陌生但是又熟悉,它还是对数据库的增删改查只是操作方法是建立在面向对象的基础上的。自己看的视频中有很多原理老师讲的也比较容易懂得,关于这样原理自己觉得研究是有必要的因为结合最近学习和使用AJAX的情况懂得原理了操作起来更容易,而且灵活一些。