C# 检测实体是否附加到datacontext
我有一个需要保存实体对象的过程。问题是我不知道这个实体是否附加到我的datacontext。为了解决这个问题,我使用以下代码:C# 检测实体是否附加到datacontext,c#,linq-to-sql,C#,Linq To Sql,我有一个需要保存实体对象的过程。问题是我不知道这个实体是否附加到我的datacontext。为了解决这个问题,我使用以下代码: try { db.ClientUsers.Attach(clientUser); db.Refresh(RefreshMode.KeepCurrentValues, clientUser); } catch { } db.SubmitChanges(); 我正在寻找一种更好的方法来检测一个实体是否属于一个上下文,并测试一个实体是否附加到一个特定的上
try
{
db.ClientUsers.Attach(clientUser);
db.Refresh(RefreshMode.KeepCurrentValues, clientUser);
}
catch { }
db.SubmitChanges();
我正在寻找一种更好的方法来检测一个实体是否属于一个上下文,并测试一个实体是否附加到一个特定的上下文 我想知道。。。对于未连接的对象,返回什么?即使它抛出异常,也可能比刷新更快
(更新)-测试显示返回空值:
Customer cust = new Customer();
Customer orig = ctx.Customers.GetOriginalEntityState(cust);
Assert.IsNull(orig);
cust = new Customer();
ctx.Customers.Attach(cust);
orig = ctx.Customers.GetOriginalEntityState(cust);
Assert.IsNotNull(orig);
Assert.AreNotSame(cust,orig);
因此,也许可以使用
GetOriginalEntityState
并检查空返回值…我认为更好的解决方案是:
ObjectStateEntry stateEntry = null;
if (context.ObjectStateManager.TryGetObjectStateEntry(entity, out stateEntry))
{
//you know you are attached!
}
在上找到。这太棒了!这为DataContext提供了一个很好的“IsAttached(Of T)”扩展方法