【发布时间】:2010-03-12 19:43:29
【问题描述】:
我有一个 ASP.NET 页面,用于更新选定记录的注册用户地址详细信息。
下面是我从控制器调用的更新方法。
当我调用ApplyPropertyChanges 方法时,我收到一个错误。是否有人在使用 Entity Framework 更新记录时遇到了同样的错误?
感谢您的回复。
错误信息:
ObjectContext 中的现有对象处于已添加状态。只有在现有对象处于未更改或修改状态时才能应用更改。
我的Update 方法:
[HttpPost]
public bool UpdateAddressDetail([Bind(Prefix = "RegUser")] AddressDetail regUserAddress, FormCollection formData)
{
regUserAddress.AD_Id = 3;
regUserAddress.LastUpdated = HttpContext.User.Identity.Name;
regUserAddress.UpdatedOn = DateTime.Now;
regUserAddress.AddressType = ((AddressDetail)Session["CurrentAddress"]).AddressType ?? "Primary";
regUserAddress.Phone = ((AddressDetail)Session["CurrentAddress"]).Phone;
regUserAddress.Country = ((AddressDetail)Session["CurrentAddress"]).AddressType ?? "USA";
miEntity.ApplyPropertyChanges(regUserAddress.EntityKey.EntitySetName, regUserAddress);
miEntity.SaveChanges();
return true;
}
【问题讨论】:
-
我在这里以稍微不同的方式解释了同样的问题:stackoverflow.com/questions/2443062/… 主要原因是有一个 TypeConverter 最终将 State(这是一个实体/查找表)添加到地址,并且that 将 Address 对象从 Detached 状态移动到 added 状态。现在不可能 ApplyPropertyChanges 或附加错误添加的地址。如果不是使用 TypeConverter,而是在控制器本身中分配 EntityReference,它就可以正常工作。所以 - 是否可以避免添加对象?
标签: asp.net asp.net-mvc entity-framework