如何使用非托管对象生成ObjectSet的副本?

时间:2011-01-20 22:55:15

标签: .net orm c#-4.0 entity-framework-4

我想获取ObjectSet的所有数据(类似于getAllProducts()),但是只能读取这些数据,所以如果有人使用从该集合中获取的对象,他只修改集合上的对象而不是ObjectContext在持久性引擎中管理目标或数据。

我已经读过,分离会停止上下文以维护跟踪信息。另外,我读过分离可能会占用大量的系统资源。

我该怎么办?我想要一个集合的副本。

1 个答案:

答案 0 :(得分:2)

你是对的 - ObjectContext.Detach从ObjectStateManager中删除对象。这实际上减少了使用的内存量。

分离对象时,以下注意事项适用:

  • 分离仅影响传递给方法的特定对象。如果正在分离的对象在对象上下文中具有相关对象,则不会分离这些对象。
  • 在独立关联中,不为分离对象维护关系信息。
  • 分离对象时不保留对象状态信息。这包括跟踪的更改和临时键值。
  • 分离对象不会影响数据源中的数据。
  • 在分离操作期间,不会强制执行标识关系中的级联删除指令和引用约束。

有关详细信息,请参阅here

布赖恩