使用ASP.NET MVC和Entity Framework时,当我需要将更改写入数据库时,会遇到一些附加/分离错误。
首先,我是如何从我的存储库中获取记录的:
public PublishedApplication GetPublishedApplication(int id)
{
return dal.ExecuteFirstOrDefault(
context.PublishedApplication.Include("Customers")
.Where(w => w.Id == id));
}
请注意,这不是分离的,它有MergeOption = AppendOnly。
另一个地方,我在我的仓库中调用一个方法将客户附加到应用程序:
public void AttachCustomer(int applicationId, int customerId)
{
var app = new PublishedApplication{ Id = applicationId};
var customer = new Customer { Id = customerId};
try
{
context.AttachTo("PublishedApplication", app);
context.AttachTo("Customer ", customer );
app.Customers.Add(customer);
context.SaveChanges();
}
catch
{
throw;
}
}
这当然会给我一个错误,即对象(app和customer)已经附加到对象上下文。
所以我需要在我的存储库中分离我的对象。这也更正确,因为我不需要在网络上抛出“查询相关信息”。但是我怎么能这样做呢?如果我在GetPublishedApplication
方法中分离实体,我的相关数据图就会丢失,而我负担不起。我需要在我网站的其他地方使用该图表。无法使用合并选项NoTracking
。
那么我有什么选择?
提前致谢!
答案 0 :(得分:0)
我认为,重新附加实体并不容易 可能是这篇文章会帮助你: Reattaching Entity Graphs with the Entity Framework on codeproject.com