ObjectContext.Detach(Object) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
从对象上下文移除对象。
public:
void Detach(System::Object ^ entity);
public void Detach (object entity);
member this.Detach : obj -> unit
Public Sub Detach (entity As Object)
参数
- entity
- Object
要分离的对象。 仅移除 entity
;如果有任何相关对象受同一 ObjectStateManager 跟踪,则不会自动分离这些对象。
例外
entity
为 null
。
entity
不与此 ObjectContext 关联(例如,是新创建的,仍未与任何上下文关联,或是通过其他上下文获取,或是已分离)。
示例
// This method is called to detach SalesOrderHeader objects and
// related SalesOrderDetail objects from the supplied object
// context when no longer needed by the application.
// Once detached, the resources can be garbage collected.
private static void DetachOrders(ObjectContext context,
SalesOrderHeader order)
{
try
{
// Detach each item from the collection.
while (order.SalesOrderDetails.Count > 0)
{
// Detach the first SalesOrderDetail in the collection.
context.Detach(order.SalesOrderDetails.First());
}
// Detach the order.
context.Detach(order);
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.ToString());
}
}
注解
从 ObjectStateManager 移除对象。 这会禁用对该对象的更改跟踪和标识解析。 有关详细信息,请参阅附加和分离对象。
调用 Detach 方法后,系统将不再保留指向此对象的引用,此对象可由垃圾回收器收集。
注意
仅当用户代码不包含对已分离对象的任何引用时,才进行垃圾回收。
在分离对象时,应考虑以下注意事项:
Detach 仅影响传递给方法的特定对象。 如果要分离的对象在对象上下文中具有相关对象,则那些相关对象不会分离。
分离对象不影响数据源中的数据。
在分离操作过程中不会强制执行级联删除指令和引用约束。
有关详细信息,请参阅附加和分离对象。