摘要:
EntityFramework默认支持乐观并发 乐观并发中,实体加载后如果都没发生变化,ef保存该实体 首先,我们需要一个rowversion列为了控制student实体的并发问题,rowversion的数据类型为字节数组,rowversion像是自增id, rowversion的值在数据库当中自动 阅读全文
摘要:
使用主键属性 每个实体必须有主键 默认值的id属性值必须为0 在context2中,它不知道实体的状态, 只能通过实体的主键来判断实体的状态 如果主键为0,则是新的对象,不为0 就是修改 使用主键的好处有: 1.不需要多余的代码来决定实体的状态 2.良好的性能 不好的地方有 ; 1.每个实体都需要有 阅读全文
摘要:
//Create student in disconnected mode Student newStudent = new Student() { StudentName = "New Single Student" }; //Assign new standard to student entity newStudent.Standard = new Standar... 阅读全文
摘要:
Student studentToDelete; //1. Get student from DB using (var ctx = new SchoolDBEntities()) { studentToDelete = ctx.Students.Where(s => s.StudentName == "Student1").FirstOrDefault(); } //Create n... 阅读全文
摘要:
1.从DB中获取存在是student 2.在context作用域之外设置studentname 3.使用Context.Entry()方法获取实体的DBEntityEntry,并更改实体状态为modified 阅读全文
摘要:
首先创建新的Student对象并设置StudentName为bill 其次创建新的Context上下文,并把新实体添加到Students的EntitySet中 最后调用SaveChanges方法,将在数据库中执行如下操作 上面也可以用如下方法添加实体 阅读全文
摘要:
如何把断开的实体添加到新的context上下文中 1.首先,我们需要把实体附加到新的context上下文实例中。 2.其次,手动的给实体设置适当的实体状态,因为新的context上下文不知道断开的实体上有什么操作。 DbSet.Add(): 把实体添加到context上下文,并自动设置实体的属性为a 阅读全文
摘要:
实体框架的持久化 当用EntityFramework持久化一个对象时,有两种情形:连接的和断开的 1.连接场景:使用同一个context上下文从数据库中查询和持久化实体时,查询和持久化实体期间,context不会被销毁 2.断开场景:实体的查询和保存提交使用不同的context上下文 上图所示,co 阅读全文
摘要:
EntityFramework自动跟踪上下文中已经加载的实体,DbChangeTracker类给你关于当前实体的所有跟踪信息 注意,每个实体都要有EntityKey(主键)的属性,EntityFramework将不添加没有主键的概念模型 阅读全文
摘要:
DbEntityEntry是一个重要的类,用来获取各种各样的实体信息 可以通过DBContext的Entry方法获取DbEntityEntry的实例 通过DBEntityEntry,可以获取实体的状态,所有属性的当前值和原始值 DbEntityEntry可以设置实体的状态如Added、Modifie 阅读全文