Exportar (0) Imprimir
Expandir todo
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original.
Traducción
Original

Aplanar objetos (EntityDataSource)

.NET Framework 4

En algunos casos, el control EntityDataSource crea contenedores en torno a las entidades. En este tema se describen escenarios de creación del contenedor y se muestra cómo obtener el objeto entidad del contenedor.

Al inicializar el control EntityDataSource mediante la propiedad EntitySetName, EntityDataSource encapsula cada instancia de la entidad incluida en los resultados en un objeto de tipo ICustomTypeDescriptor. El objeto contenedor expone elementos PropertyDescriptor que habilitan el enlace de datos bidireccional para los objetos de tipo complejo y para aquellos que participan en una relación. Asimismo, PropertyDescriptor también proporciona acceso a información de clave externa. Como resultado, al intentar obtener el objeto entidad original, por ejemplo, de los argumentos del evento RowDataBound del control GridView, obtendrá un objeto contenedor en lugar del objeto entidad.

NotaNota

Los objetos entidad no se encapsularán si se usa la propiedad CommandText para especificar una consulta que devuelve objetos entidad o la proyección de propiedades específicas, o bien se usa Select para generar consultas de proyección.

En el código siguiente se muestra cómo obtener un objeto entidad de un objeto contenedor:

protected void ProductsGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    var entity = dataItem as Product;
    if (entity == null)
    {
        var td = dataItem as ICustomTypeDescriptor;
        if (td != null)
        {
            entity = (Product)td.GetPropertyOwner(null);
        }
    }
}

Si usa .NET Framework versión 4 o posterior, puede incluir las propiedades de clave externa en el modelo. De esta forma, los objetos contenedores no son necesarios en muchos casos. Para desactivar la creación de contenedores, establezca la propiedad EnableFlattening en false. De forma predeterminada, EnableFlattening es true. Si su modelo conceptual incluye propiedades de clave externa y no contiene tipos complejos, el diseñador de EntityDataSource establecerá EnableFlattening en false en tiempo de diseño para evitar la creación de objetos contenedores entidad.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft