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


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

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

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

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

 

怎么办呢?

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

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

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

 

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

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

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM