我已经使用Entity Framework和ObjectDataSource for GridView。虽然我尝试使用updatemethod我得到了运行时错误消息
ObjectStateManager中已存在具有相同键的对象。 ObjectStateManager无法使用相同的键跟踪多个对象。
这是我的aspx文件代码:
<asp:ObjectDataSource ID="odsCustomerList" runat="server" DataObjectTypeName="EF.POCO.Customer"
TypeName="EF.BusinessLayer.CustomerMaster" SelectMethod="ReadAllCustomer" SortParameterName="sortExpression"
ConflictDetection="CompareAllValues" OldValuesParameterFormatString="orig{0}"
UpdateMethod="UpdateCustomer" DeleteMethod="DeleteCustomer">
</asp:ObjectDataSource>
这是我的DA层代码文件
public void UpdateCustomer(Customer customer, Customer origCustomer)
{
try
{
BusinessEntityBase.Entities.Customers.MergeOption = System.Data.Objects.MergeOption.NoTracking;
BusinessEntityBase.Entities.Customers.Attach(origCustomer);
BusinessEntityBase.Entities.ApplyCurrentValues("Customer", customer);
BusinessEntityBase.Entities.SaveChanges();
}
catch (Exception ex)
{
throw ex;
}
}
是否有人可以帮助解决此问题?
答案 0 :(得分:1)
您如何管理上下文(ObjectContext) - 多个请求之间是否共享BusinessEntityBase.Entities
?这可能是一个问题 - 因为当您尝试从其他请求更新对象时,从一个请求检索的对象可能会发生冲突(因此attach
将失败)。请参阅此链接以获取可能的解决方案:http://dotnetslackers.com/articles/ado_net/Managing-Entity-Framework-ObjectContext-lifespan-and-scope-in-n-layered-ASP-NET-applications.aspx