Compartir a través de


Entity Framework FAQ: Modelo Conceptual (EDM)  (es-ES)

¿Entity Framework admite tipos abstractos en modelos EDM?

En el Entity Framework es posible declarar tipos abstractos en el modelo EDM (archivo CSDL) — es decir, no pueden crear instancias de entidades de estos tipos, pero los tipos se pueden derivar de ellos. De hecho, tipos pueden marcarse como abstracto en el diseñador. El tiempo de ejecución permite incluso que tipos abstractos sean el tipo base de varios conjuntos de entidades diferentes (imaginar un escenario donde desea un único tipo de base para todas las entidades a pesar de que viven en varios conjuntos). Para obtener más información, consulte elemento EntityType (CSDL) .

¿Entity Framework tiene soporte para tipos complejos? ¿Cuáles son los tipos complejos? ¿Cómo son diferentes de los tipos de entidad en el EDM?

Tipo complejo es el nombre de Entity Framework para propiedades de valor que tienen más intrincada estructura que escalares. El ejemplo canónico es un tipo de Dirección que contiene varias partes (calle, ciudad, Estado, etc.). Tipos complejos son algo parecido a las entidades, excepto que no tienen ninguna identidad propia (son tipos de valor). Esto significa que una instancia de tipo complejo es siempre parte de una otra entidad envolvente — no tiene existencia independiente, no tiene relaciones, etc.. Entity Framework admite los tipos complejos, pero actualmente las escenarios de asignación de tipos complejos son significativamente limitada: no se admite la herencia (herencia es apoyada por entidades — no sólo para los tipos complejos), propiedades de tipo complejo no pueden ser nulas y sólo pueden ocurrir en instancias únicas, no en las colecciones. Para obtener más información, consulte tipo complejo (CSDL) .

¿Entity Framework soporta múltiple conjuntos de entidades por tipo? ¿Por qué es necesario el apoyo de "múltiple conjuntos de entidades por tipo"?

Los soportes de Entity Framework múltiples entidad establece por tipo: Esto significa que puede definir un modelo que tiene más de una entidad con el mismo tipo de base. Esto es importante porque permite que los modelos que funcionan más naturalmente con varios modelos de base de datos. Si tienes dos tablas con el mismo esquema (por ejemplo, "cuentas" y "expired_accounts"), puede definir una entidad establecida para cada tabla que utiliza el mismo tipo de entidad en lugar de tener que crear un tipo de entidad diferente que sólo pasa a tener las mismas propiedades. Para obtener más información, consulte conjuntos de entidad (CSDL) . Dicho esto, crear múltiples conjuntos de entidades del mismo tipo puede agregar complejidad significativa a su modelo y en la práctica rara vez se utiliza. Como resultado, el diseñador y un número creciente de nuevas características de tiempo de ejecución de Entity Framework como ObjectSet han ofrecido menos completo o soporte para múltiples no establece para el mismo tipo. Generalmente se recomienda restringir usted mismo a más de una entidad para cada tipo

¿Son asociaciones entre subtipos compatibles?

Entity Framework admite las asociaciones entre los subtipos. Esto significa que puede definir las relaciones entre los tipos en la jerarquía de tipos incluso si no son los tipos base. Así, por ejemplo, si tiene una jerarquía que tiene el cliente y BigAccountCustomer, se podría crear una entidad tipo DiscountPolicy y una relación que se relaciona BigAccountCustomers con DiscountPolicies, pero no se refieren a los clientes a DiscountPolicies.

Sin embargo, debe señalarse que WCF Data Services (aka Astoria) no admite las asociaciones entre los subtipos. Con servicios de datos, todas las asociaciones deben ser entre los tipos de origen de los conjuntos de entidades involucrados.

¿El EDM soporta GUID?

Sí. El EDM soporta GUID como uno de sus tipos primitivos. Puede utilizar identificadores GUID como columnas regulares o como claves principales en el modelo conceptual. Ver trabajando con claves de entidad para obtener más información sobre el uso de identificadores GUID en EntityKeys.

¿Soporta el EDM/EF enumeraciones?

Todavía no. Hay planes para agregar soporte libera en el futuro. Puede experimentar con el nuevo apoyo de enum en junio de 2011 Entity Framework CTP .

Aquí es posible solución propuesta por Alex James: Tip 23 - cómo falsas enumeraciones en 4 EF .

¿Cómo eliminar un objeto y todas sus entidades relacionadas? ¿Es lo correcto especificar la cascada eliminar acción en el modelo y no en la base de datos (o al revés)?

Para eliminar un objeto y todas sus entidades relacionadas, especificar la cascada eliminar acción en el modelo y la base de datos. Para evitar resultados inesperados se recomienda especificar reglas de eliminación en cascada en el modelo y la base de datos.

Las consideraciones siguientes se aplican al agregar reglas de eliminación en cascada:

  • Si actualiza la base de datos con una regla de eliminación en cascada y, a continuación, actualizar el modelo de la base de datos, el diseñador de Entity Framework no agregar una regla de eliminación en cascada en la capa conceptual. Tendrá que agregar manualmente.
  • Si se añade la regla de eliminación en cascada a un modelo, Entity Framework no sobrescribirá lo si actualiza el modelo de la base de datos.
  • Si crea primero el modelo y generar la base de datos de un modelo que tiene en cascada eliminar reglas especificadas, las reglas se propagará a la base de datos.

El blog siguiente explica por qué debe tener en cascada eliminar reglas especificadas en el modelo y la base de datos: http://blogs.msdn.com/b/alexj/archive/2009/08/19/tip-33-how-cascade-delete-really-works-in-ef.aspx.

Consulte también las reglas de eliminación en cascada en la sección de relaciones de crear, agregar, modificar y eliminar objetos .

¿Entity Framework permite incrustar archivos de metadatos como recursos en la Asamblea?

Sí. Entity Framework permite almacenar archivos de metadatos como recursos en la Asamblea; en la cadena de conexión puede indicar el Entity Framework para encontrarlos allí. La forma de hacerlo es añadir los archivos CSDL, MSL y SSDL para el proyecto y establezca la propiedad de "Acción de generación" en cada uno para "Embedded Resource". Entonces cuando especifique la cadena de conexión, en lugar de enumerar explícitamente los archivos de metadatos, sólo puede agregar "metadatos = res: / / * /;" que dice la EF para buscar los recursos apropiados en la aplicación del vinculado estáticamente ensamblados. Para obtener más información, consulte cadenas de conexión (Entity Framework) . Unico tener cuidado es que la Asamblea que disponga de los recursos debe ser cargada en el mismo dominio de aplicación que tiene la conexión de la entidad.

¿Cuando se utiliza el archivo EDMX? ¿Cuál es la diferencia entre el archivo EDMX y los archivos de tres esquema (CSDL, MSL y SSDL)?

El diseñador EDM utiliza un archivo llamado EDMX para almacenar todos los metadatos sobre un modelo de Entity Framework. Este un archivo incluye los archivos CSDL, MSL y SSDL en secciones separadas dentro de ella. En tiempo de ejecución, el sistema requiere los tres archivos por separado, y los diseñadores proyectos crean automáticamente en tiempo de compilación de la aplicación de directorio o como recursos en un ensamblado.

¿Cómo es el "uso" apoyo en archivos de metadatos que se utilizan?

Soporte de <Using> en archivos de metadatos: modelos pueden construirse desde múltiples archivos CSDL independientes — algo como una declaración "usando" en un archivo de C#, que aporta un espacio de nombres en el archivo, o como instrucción un # include en un programa de c o C++ excepto con mayor validación que usted obtenga en el preprocesamiento puramente textual de # incluir. Para obtener más información, consulte [elemento utilizando (CSDL) . Dicho esto, esta característica sólo permite composición de archivos CSDL no MSL o SSDL archivos y no hay apoyo en el diseñador. Esta es una característica muy limitada que la mayoría de los programadores no encontrarán útil en la práctica, por lo que debe ignorarse.

¿Es posible crear consultas que se extienden por múltiples contextos del objeto (o espacio) o conexiones de entidad (c-espacio)?

La EF no admite consultas a través de conexiones de entidad (c-espacio) o contextos del objeto (o espacio). También no admite modelos asignados a más de una base de datos (si lo hiciera, sería posible crear un contexto del objeto sobre tablas de varias bases de datos).

Hay dos soluciones:

  • Abrir varios contextos, consultarlos para traer objetos para el cliente y luego unir mediante LINQ a objetos.
  • Utilice la función de servidores vinculados en SQL Server para ocultar el hecho de que hay más de una base de datos. Hacerla parecer para el modelo es una base de datos.

¿Se pueden agregar anotaciones personalizadas en el archivo CSDL?

No hay soporte en archivos CSDL para incluir anotaciones personalizadas, que ignora el marco, pero puede ser útil para herramientas o otros sistemas construyen alrededor de EDM. Estas anotaciones son surgieron en el API de metadatos pero no utilizadas por el EF.