UpdateModel()无法为导航属性(实体引用)分配新值

时间:2011-01-12 22:07:40

标签: asp.net-mvc asp.net-mvc-2

这发生在ASP.NET MVC 2,.NET 4(EF 4)中。我的Address实体引用了Post引用。 Zip是Post实体的主键。 Post实体中的另一个属性是CityName。在我的视图中,我允许用户更改CityName的地址,该地址自动(通过jquery)加载相应的Zip并将其存储在隐藏字段中。

发布后,这两个值都会正常发布并绑定到Address的帖子引用。但UpdateModel()无法更新它们。它说Zip是实体实体密钥的一部分,不能更改。

我很乐意通过新Zip加载Post实体并手动将其分配给现有地址,但对于我失去的所有其他属性都要依赖于UpdateModel()。

我怎样才能实现这一目标?有人会认为在EF4这样的东西已经解决了。

1 个答案:

答案 0 :(得分:0)

默认情况下,实体框架生成的类对更改主键值施加限制。这很好。你不应该出于任何原因改变PK。在添加方案之外更改PK会对状态跟踪和系统的整体运行状况产生巨大影响。

要解决此问题,您希望告诉Up​​dateModel不要使用exclude参数更新主键。