efcore 开发日志

4/15/2022 2:41:32 PM
663
0

取消对象状态跟踪

dBContext.Entry(model).State = EntityState.Detached;

跟新对象的几个字段

            Section theSection = base.Get(oldsection.Id);

            theSection.Name = oldsection.Name;
            theSection.Remark = oldsection.Remark;

 			dBContext.Entry(theSection ).State = EntityState.Detached;
            dBContext.Attach(theSection);
            dBContext.Entry(theSection).Property(p => p.Name).IsModified = true;
            dBContext.Entry(theSection).Property(p => p.Remark).IsModified = true;

            //dBContext.Update(oldsection);设置了  dBContext.Entry(theSection ).State = EntityState.Detached;所以不能使用 Update,也不用使用Update语句
            dBContext.SaveChanges();

				如果更新字段较多,上面的方法都要写一堆需要更新字段的代码,假如有10个字段,更新9个,仅有一个字段不更新,那么,可以用以下方法
                dbContext.Entry(user).State = EntityState.Modified;//将所有字段设置为要更新的状态
                dbContext.Entry(user).Property(o=>o.UserName).IsModified = false;//再将不需要的字段设置为不更新,那么这样就达到了更新多个字段,除此字段外
 
                dbContext.SaveChanges();
   				利用属性设置更新部分字段,适用于更新字段少的情况,比如实体总共有10个字段,仅更新两个或一个字段的情况下
   				dbContext.Attach(user);
                //将需要更新的字段设置为true,没有设置的字段不更新,这种方法不用查询数据库找到实体
                dbContext.Entry(user).Property(o => o.UserName).IsModified = true;
 
                dbContext.SaveChanges();
 

获得自增id

dbContext.Entry(clue)

删除EF的本地缓存,通常用不到,除非在一个Scope里

dbContext.Clue.Local.Remove(clue);

全部评论



提问