Share via


Personalizar objetos (Entity Framework)

ADO.NET Entity Framework proporciona herramientas para generar automáticamente un nivel de objetos basado en el archivo de lenguaje de definición de esquemas conceptuales (CSDL) de un Entity Data Model (EDM). Estas clases de datos se pueden personalizar en grados diferentes, según los requisitos de una aplicación. También puede modificar sus propias clases de datos personalizadas para utilizarlas con un modelo EDM. Esto resulta útil cuando actualiza las clases de datos de una aplicación existente para utilizar Entity Framework o si desea más control sobre el modo en que se crean las clases de datos.

Extender las clases de datos parciales

Los tipos que se definen en un modelo EDM no tienen métodos asociados como las clases que se usan en la programación orientada a objetos. En su lugar, sólo contienen las propiedades que se definen en el modelo EDM. Puede agregar funcionalidad a los objetos extendiendo las clases de datos parciales generadas. Cuando las herramientas de Entity Data Model generan las clases de datos, se implementan en clases parciales. Una clase parcial divide la definición de una clase en dos o más archivos de código fuente. Cada archivo de código fuente contiene una sección de definición de la clase y todas las secciones se combinan cuando se compila la aplicación. Para obtener más información, vea Partial (Visual Basic) o Tipo parcial (Referencia de C#).

Tener clases parciales le permite extender estas clases con métodos y propiedades personalizados en un archivo de código fuente independiente sin tener que preocuparse por perder su personalización cuando se actualizan los archivos generados. Para obtener más información, vea Cómo personalizar los objetos de datos generados (Entity Framework).

Lógica de negocios personalizada

Al utilizar las clases de datos generadas, puede invocar la lógica de negocios personalizada durante ciertas operaciones del Servicio de objeto, por ejemplo en los cambios de las propiedades o relaciones. Esta lógica comercial podría incluir crear una validación o un registro adicional al cambiar las propiedades o llamar a SaveChanges. Puede invocar la lógica de negocios personalizada administrando los eventos que genera Servicios de objeto o definiendo métodos parciales personalizados a los que se llama cuando se cambian las propiedades.

A continuación se muestran los eventos y métodos que se usan para invocar la lógica de negocios personalizada:

Clases de datos personalizadas

Hay casos en los que es posible que para ofrecer una flexibilidad suficiente no baste con solo extender las clases parciales agregando métodos y propiedades. Considere una aplicación de .NET Framework existente que utilice ADO.NET para cargar los datos de una base de datos en los objetos CLR para que la aplicación los utilice. Estos objetos podrían contener valiosas personalizaciones y una lógica de negocios que se deban conservar en el nivel de objeto. Estas personalizaciones podrían impedirle migrar la aplicación para utilizar Entity Framework. También podría preferir tener más control sobre los tipos de entidad que extender simplemente las clases parciales generadas.

La manera recomendada de usar clases de datos personalizadas con un EDM es heredar de EntityObject. Si no puede heredar de EntityObject, o si necesita más independencia del marco, Entity Framework le proporciona un conjunto de interfaces que puede implementar para utilizar las clases de datos personalizadas con un modelo EDM. Para obtener más información, vea Implementar interfaces de clases de datos personalizadas (Entity Framework). Cuando usa clases de datos personalizadas, debe aplicar los atributos a las clases de datos y propiedades personalizadas, y notificar el contexto del objeto al cambiar las propiedades.

Heredar de EntityObject

Las clases de datos generadas heredan de EntityObject o ComplexObject. Si tiene que utilizar las clases de datos personalizadas con un EDM, la manera recomendada es modificar las clases de datos para heredar de una de estas dos clases base. De esta manera, las clases de datos personalizadas se benefician del seguimiento de cambios y de la funcionalidad de administración de relaciones que EntityObject proporciona.

Al heredar de las clases EntityObject y ComplexObject, tenga en cuenta los puntos siguientes:

En el ejemplo siguiente se define la clase de datos personalizada Order, que hereda de EntityObject:

<EdmEntityTypeAttribute(NamespaceName:="Microsoft.Samples.Edm", Name:="Order")> _
Public Class Order
    Inherits EntityObject
[EdmEntityTypeAttribute(NamespaceName="Microsoft.Samples.Edm",Name="Order")]
public class Order : EntityObject 

Para obtener más información, vea Cómo heredar de las clases base EntityObject y ComplexObject (Entity Framework).

En esta sección

Vea también

Otros recursos

Servicios de objeto (Entity Framework)
Trabajar con objetos personalizados (tareas de Entity Framework)