检测实体是否附加到datacontext

Nie*_*sma 15 c# linq-to-sql

我有一个程序需要保存实体对象.问题是我不知道这个实体是否附加到我的datacontext.为了解决这个问题,我使用以下代码:

try
{
    db.ClientUsers.Attach(clientUser);
    db.Refresh(RefreshMode.KeepCurrentValues, clientUser);
}
catch { }

db.SubmitChanges(); 
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种更好的方法来检测一个实体是否属于一个上下文,并测试一个实体是否附加到一个特定的上下文.

Mar*_*ell 22

我想知道...... GetOriginalEntityState对于非附着物体的回报是什么?即使它抛出异常,它也可能比刷新更快......

(更新) - 测试显示它返回null:

        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);
Run Code Online (Sandbox Code Playgroud)

所以也许使用GetOriginalEntityState并检查null返回值...

  • 这很棒!为DataContext创建了一个很好的"IsAttached(Of T)"扩展方法. (3认同)