EF将实体保留在Context之外,并在需要时返回

时间:2012-03-01 01:05:39

标签: entity-framework serialization objectcontext

我有一个使用EF4.3 ObjectContext的销售收据表。我正在努力想要拿出收据(EF ObjectContext中的一个实体)并移出上下文并在用户想要它时返回。情况是每当销售收据表单关闭时,上下文就会消失。问题是用户应该能够将其检索回来并添加到当前上下文中。

要分离的代码

Serialize(receipt, savepath)
While Receipt.RECEIPTLINEs.Count > 0
      Context.Detach(Receipt.RECEIPTLINEs.First)
End While
Context.Detach(Receipt)
AddNewReceipt()

要附加的代码

Dim receipt = DeSerialize(savepath)
Context.Attach(receipt)

1 个答案:

答案 0 :(得分:0)

用户始终可以将其检索回来 - 您将对新上下文执行查询。您只需要知道收据的标识(密钥)。

如果你需要共享收据实例,你必须简单地构建一些基础设施代码,你将继续参考收据,第一个表格将设置它,后面的代码将使用它 - 这不是EF可以为你做的。您只需要在关闭第一个表单之前从上下文中分离收据。

objectContext.Detach(receipt);