【问题标题】:How can I tell if a given Linq-to-Sql object is attached to a datacontext?如何判断给定的 Linq-to-Sql 对象是否附加到数据上下文?
【发布时间】:2010-10-24 20:45:20
【问题描述】:

我将 linq 2 sql 用于我的 ORM。

出于性能原因,我将其中的一些序列化,然后将它们放入 memcached 中。

当它们被反序列化时,它们当然不会附加到数据上下文,这 100% 没问题,因为它们仅用于在这些场景中读取。

然而,出于理智的原因,我希望能够判断给定对象是否附加到数据上下文(从数据库中获取),或者没有(从 memcached 中获取)。

有什么想法吗?

谢谢。

【问题讨论】:

    标签: linq-to-sql datacontext


    【解决方案1】:

    使用 GetOriginalEntityState。这是一个测试。

    客户 cust = new Customer(); ctx.Customers.Attach(cust); 客户来源 = ctx.Customers.GetOriginalEntityState(cust); //测试orig是否为null

    【讨论】:

    • 感谢大卫,这似乎确实有效。但是,当您尝试附加确实来自上下文的实体时,它会引发异常,如果此检查作为警卫频繁运行,则可能会变得昂贵:\
    • 仅使用GetOriginalEntityState 方法和空检查而不首先调用Attach 似乎可以工作,例如entityTable.InsertAllOnSubmit( entities.Where( e => entityTable.GetOriginalEntityState( e ) == null ) ) 正确插入所有新实体。
    猜你喜欢
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多