我有一个带有以下实体对象的小型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/