【发布时间】:2014-07-26 02:02:42
【问题描述】:
好的,这几天我一直在纠结这个问题。
如何指示实体框架将对象作为外键插入现有对象,而不是作为全新对象?我已经尝试了各种各样的事情。我不断收到错误消息“ObjectStateManager 中已存在具有相同键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。”
我只是想在地址中添加一个国家。这些国家都列在一个单独的数据库表中。该国家/地区来自 MVC 视图发布的下拉列表,因此我只有 ID。这意味着我可以获取对象的唯一方法是查询 EF,这会导致重复的对象。
希望有人可以提供帮助。啊!
M
=== 更多信息 ===
虽然上面指出只设置 countryID 非常正确,但这仅适用于创建场景。它不适用于编辑。
我的控制器中有这个:
public ActionResult Edit(SiteViewModel siteViewModel)
{
if (ModelState.IsValid)
{
Site site = _unitOfWork.SiteRepository.GetById(siteViewModel.SiteID);
_unitOfWork.Detach(site);
site = Mapper.Map<SiteViewModel, Site>(siteViewModel);
site.CountryId = siteViewModel.CountryId;
...
}
}
我现在仍然得到具有相同键错误的多个对象。如何分离国家/地区以便我可以重新添加它(!)而不将其从数据库中删除??
请帮忙!
M
【问题讨论】:
-
能否请您发布
Country和Address实体?
标签: c# asp.net-mvc entity-framework