Share via


Definir la lógica de negocios (Entity Framework)

Agregue la lógica de negocios a su aplicación de Entity Framework controlando los eventos que se desencadenan durante ciertas operaciones, tales como cambios en propiedades o relaciones. Esta lógica de negocios podría incluir la creación de una validación o un registro adicional al cambiar las propiedades o llamar al método SaveChanges. Puede invocar la lógica de negocios personalizada administrando los eventos que genera Entity Framework o definiendo métodos parciales personalizados a los que se llama cuando se cambian las propiedades. Este tema enumera algunos eventos y proporciona vínculos a otros temas relacionados.

Evento y métodos parciales Descripción

System.Data.Objects.ObjectContext.ObjectMaterialized

Se desencadena cuando se crea una nueva entidad a partir de datos del origen de datos como parte de una operación de consulta o de carga. El evento se produce una vez establecidas en un objeto todas las propiedades escalares, complejas y de referencia, pero antes de que se carguen las colecciones. Si un objeto con el mismo valor de la clave ya existe en el contexto, Entity Framework no volverá a crear el objeto, y no se producirá este evento.

System.Data.Objects.ObjectContext.SavingChanges

Se desencadena en el inicio de una operación SaveChanges sobre un ObjectContext. Este evento normalmente se usa para validar los objetos modificados antes de que los nuevos valores se escriban en la base de datos.

Para obtener más información, vea Cómo: Ejecutar la lógica de negocios al guardar los cambios (Entity Framework).

System.Data.Objects.ObjectStateManager.ObjectStateManagerChanged

Se produce cuando las entidades abandonan el contexto a través de métodos para eliminar o desasociar, o cuando entran en el contexto a través de consultas o métodos para agregar y asociar. Para obtener más información, vea Cómo: Ejecutar la lógica de negocios cuando el estado del objeto cambia.

Dd456876.note(es-es,VS.100).gifNota:
Si está utilizando entidades POCO sin proxys de seguimiento de cambios, el cambio se detecta al llamar al método DetectChanges o al método SaveChanges, el cual llama a DetectChanges.

System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged

Se produce cuando una asociación cambia. Si está utilizando entidades predeterminadas generadas por el código o entidades POCO con objetos proxy, entonces esto se produce al mismo tiempo que se realiza el cambio en la propiedad de navegación:

Dd456876.note(es-es,VS.100).gifNota:
Si está utilizando entidades POCO sin proxys, el cambio se detecta al llamar al método DetectChanges o al método SaveChanges, el cual llama a DetectChanges.

Los eventos se pueden suprimir durante las operaciones masivas, como Load, Attach y Clear.

Para obtener más información, vea Cómo: Ejecutar la lógica de negocios durante los cambios de asociación.

System.Data.Objects.DataClasses.StructuralObject.PropertyChanging

Se produce cuando un valor de propiedad escalar está pendiente de cambio. Las clases generadas por Entity Framework llaman a ReportPropertyChanging en los establecedores de propiedades escalares. El método ReportPropertyChanging genera el evento PropertyChanging. Controle este evento para ejecutar la lógica de negocios, como la validación, antes de que cambie el valor de propiedad. Para obtener más información, vea Cómo: Ejecutar la lógica empresarial durante los cambios de propiedades escalares (Entity Framework).

Si realiza un seguimiento de los cambios llevados a cabo en las clases de datos que implementan IEntityWithChangeTracker, deberá usar IEntityChangeTracker para informar acerca de los cambios en las propiedades.

Dd456876.note(es-es,VS.100).gifNota:
Para ser informado de los cambios en la propiedad de navegación, registre el evento System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged.Para obtener más información, vea Cómo: Ejecutar la lógica de negocios durante los cambios de asociación.

System.Data.Objects.DataClasses.StructuralObject.PropertyChanged

Se produce cuando ha cambiado el valor de propiedad escalar. Las clases generadas por Entity Framework llaman a ReportPropertyChanged en los establecedores de propiedades escalares. El método ReportPropertyChanged genera el evento PropertyChanged. Controle este evento para ejecutar la lógica de negocios, como escribir en un registro, cuando se modifica una propiedad. Para obtener más información, vea Cómo: Ejecutar la lógica empresarial durante los cambios de propiedades escalares (Entity Framework).

Si realiza un seguimiento de los cambios llevados a cabo en las clases de datos que implementan IEntityWithChangeTracker, deberá usar IEntityChangeTracker para informar acerca de los cambios en las propiedades.

Dd456876.note(es-es,VS.100).gifNota:
Para ser informado de los cambios en la propiedad de navegación, registre el evento System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged.Para obtener más información, vea Cómo: Ejecutar la lógica de negocios durante los cambios de asociación.

Método OnContextCreated

Las herramientas de Entity Data Model generan un método parcial OnContextCreated en la clase que representa el EntityContainer para el modelo y que hereda de la clase ObjectContext. Se llama a este método parcial cada vez que se crean instancias de ObjectContext. Implemente este método parcial en su código para registrar un controlador para el evento SavingChanges. Para obtener más información, vea Cómo: Ejecutar la lógica de negocios al guardar los cambios (Entity Framework).

On PropertyName Changing y OnNombrePropiedadChanged

Las herramientas de Entity Data Model generan métodos parciales en los descriptores de acceso set de propiedades escalares para cada tipo de entidad. Se llama al método parcial OnNombrePropiedadChanging antes de que se establezca el valor. Se llama al método parcial OnNombrePropiedadChanged después de que se establezca el valor. Implemente estos métodos parciales para agregar la lógica de negocios.

Vea también

Conceptos

Personalizar objetos (Entity Framework)

Otros recursos

Entity Data Model Tools