只是想了解什么是使用linq2sql更新实体的最佳做法?在Linq2SQL中更新实体的最佳做法是什么?
更多的细节可以更好地解决问题。
正如我从文章中所理解的,我可以有两种情况:实体附加到从头开始构建的上下文和实体(或来自现有实体)。我想只有一个方法来更新entites的,这是通过以下方式实现的,现在:
public virtual void Save<T>(T value) where T : class
{
Context.GetTable<T>().Attach(value);
Context.Refresh(RefreshMode.KeepCurrentValues, value);
Context.SubmitChanges();
}
当然,当我执行的代码:
var orders = GenericRepository.Instance.Find<BuyerOrder>(b => b.ID == 2).FirstOrDefault();
orders.Price = 397809;
GenericRepository.Instance.Save(orders);
的对象已经连接到我有一个例外:
Cannot attach an entity that already exists.
我应该在保存前总是分离对象吗?有另一种方法可以解决这个问题吗?
很抱歉,如果问题是愚蠢的 - 这是我与LINQ2SQL
这是正确的答案。永远不要分开你的实体,不要玩技巧。不要“保存”个体实体。整体更改对象图形,最后调用SaveChanges。 – usr 2012-04-13 13:17:47
谢谢你的答案。但是我怎样才能定义这个实体是连接到上下文的呢?我想在1方法中处理两种情况:当实体附加到上下文时,并且它不是时 – 2012-04-16 16:44:36
您可以使用此问题中概述的答案来定义实体是否已附加:http://stackoverflow.com/questions/6493737/how-do-i-check-an-lin-to-sql-object-is-attached-to-a-datacontext – mattytommo 2012-04-16 17:11:58