我对EF 4.0有一个问题,希望有人可以提供帮助。我目前有一个实体,我想以最后的胜利方式更新(即忽略并发检查,只是用提交的内容覆盖数据库中的什么)。似乎Entity Framework不仅包含生成的sql的where子句中实体的主键,还包括任何外键字段。这很烦人,因为这意味着我没有在胜利语义中获得真实,并且需要知道fk字段在更新之前有什么价值,或者我得到并发异常。
我知道这可以通过在实体上包含外键字段以及导航属性来缩短。如果可能的话,我想避免这种情况,因为它不是一个非常干净的解决方案。
我只是想知道是否有其他方法可以覆盖此行为?它似乎更像是一个bug而不是一个功能。如果我指示它执行并发检查,我没有问题,但是不能完全绕过并发是一个障碍,因为有许多有效的场景不需要这样做
答案 0 :(得分:0)
我不是百分百肯定这会起作用,但我自己很好奇,并认为我可能找到了解决方案。
如果在一个不可变的字段上设置[ConcurrencyCheck]属性怎么办?在我的情况下,我使用了ID(主键)。由于它永远不会被更改,因此它永远不会触发并发异常,因此会破坏您的条目。
给它一个旋转,看看是否能解决你的问题。