我有一个带有以下实体对象的小型ASP.NET MVC应用程序:




人名
名称(字符串)
名字(字符串)
国家(国家)


国家


国家/地区编号
名称


我可以添加和删除该实体的正常工作。我也可以更新名字。
但是我该如何与另一个国家更新国家财产。

我正在尝试

p.Country = (from c in db.Country
             where c.CountryId == countryId
             select c).First();


但这会引发异常{“ ObjectStateManager中已经存在具有相同键的对象。ObjectStateManager无法跟踪具有相同键的多个对象。”}“

甚至在我对datacontext调用SaveChanges之前。

有人可以解释我如何更新此属性吗?

亲切的问候
迪特尔

最佳答案

db是您的上下文吗?您应该能够:

p.Country = ctx.Country.First(c => c.CountryId == countryId);


或者,如果您不想查询数据库以获取外键实体,则也可以使用EntityKey达到相同的效果:

p.CountryReference.EntityKey = new EntityKey("MyDb.Country", "CountryId", countryId);

关于c# - 使用 Entity Framework V1更新外键(实体),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1513051/

10-11 05:28