EF 中更新模型的问题,这种错误(因为相同类型的其他实体已具有相同的主键值。)

在EF经常在更新模型的时候可能会同时操作一个实体几次。

其实除了SaveChanges外,其它的几次基本都是要查询出一个结果,

例如更新的时候,我们要查一下这个表中有没有相同的纪录之类的。

查询完之后,我们再SaveChanges就会出错。

 

怎么办呢?

查询的时候我们用这个方法查询:AsNoTracking() 

db.Set<实体模型>()
            .AsNoTracking()
            .FirstOrDefault(p => p.x== x)

//但这个没有Find()方法 ,不知道怎么回事。
 

 

这个方法返回一个新查询结果,但返回的实体不会在缓存中。也就是EF查完了就不再跟踪了。

好了。记录一下。打完收功!

希望能帮到困惑很久的人们!

posted @ 2015-12-10 12:35  糖果的二师兄  阅读(6226)  评论(1编辑  收藏  举报