这发生在ASP.NET MVC 2,.NET 4(EF 4)中。我的Address
实体引用了Post
引用。 Zip是Post
实体的主键。 Post
实体中的另一个属性是CityName。在我的视图中,我允许用户更改CityName的地址,该地址自动(通过jquery)加载相应的Zip并将其存储在隐藏字段中。
发布后,这两个值都会正常发布并绑定到Address
的帖子引用。但UpdateModel()无法更新它们。它说Zip是实体实体密钥的一部分,不能更改。
我很乐意通过新Zip加载Post实体并手动将其分配给现有地址,但对于我失去的所有其他属性都要依赖于UpdateModel()。
我怎样才能实现这一目标?有人会认为在EF4这样的东西已经解决了。
答案 0 :(得分:0)
默认情况下,实体框架生成的类对更改主键值施加限制。这很好。你不应该出于任何原因改变PK。在添加方案之外更改PK会对状态跟踪和系统的整体运行状况产生巨大影响。
要解决此问题,您希望告诉UpdateModel不要使用exclude参数更新主键。