Share via


Desasociar objetos (Entity Framework)

Entity Framework admite escenarios que requieren un contexto del objeto de ejecución prolongada. Por ejemplo, podría encontrar este escenario en una aplicación para Windows en la que los objetos de datos se enlazan a un control visual y se deben conservar mientras los datos se muestran en el control. Cuando una consulta se ejecuta dentro de un contexto del objeto, los objetos devueltos se asocian automáticamente al contexto del objeto. Esto significa que al ejecutar consultas repetidas en el mismo contexto del objeto, aumentará la necesidad de memoria del contexto del objeto. La excepción se da cuando una consulta se ejecuta con un valor MergeOption de NoTracking. En este caso, los objetos no se asocian al contexto del objeto.

Servicios de objeto le permite desasociar los objetos de un contexto del objeto. Cuando los objetos ya no se requieren, se pueden desasociar. El contexto del objeto no hace referencia a los objetos desasociados y .NET Framework puede reclamar sus recursos.

Para desasociar los objetos, se llama al método Detach y se pasa una referencia al objeto que se va a desasociar, como en el ejemplo siguiente:

' Detach the first SalesOrderDetail in the collection.
context.Detach(order.SalesOrderDetail.First())
// Detach the first SalesOrderDetail in the collection.
context.Detach(order.SalesOrderDetail.First());

Al desasociar objetos deben tenerse en cuenta las consideraciones siguientes:

  • Detach sólo afecta al objeto específico que se pasa al método. Si el objeto que se desasocia tiene objetos relacionados en el contexto del objeto, esos objetos no se desasocian.

  • La información de las relaciones no se mantiene para un objeto desasociado.

  • La información del estado de los objetos no se mantiene cuando un objeto se desasocia. Esto incluye los cambios sometidos a seguimiento y los valores de las claves temporales.

  • La desasociación de objetos no afecta a los datos del origen de datos.

  • Durante una operación de desasociar no se exigen directivas de eliminación en cascada ni restricciones referenciales.

  • Las ventajas de desasociar objetos se deberían considerar teniendo en cuenta el procesamiento adicional que precisa la operación. Cuando el ámbito de los datos de usuario haya cambiado, por ejemplo al mostrar un formulario nuevo con un conjunto de datos diferente, debería considerar crear una nueva instancia de ObjectContext, en lugar de simplemente desasociar los objetos de un ObjectContext existente.

Para obtener más información, vea Cómo desasociar objetos de un contexto del objeto (Entity Framework).

Vea también

Conceptos

Asociar objetos (Entity Framework)

Otros recursos

Administrar el contexto del objeto (Entity Framework)