Cómo: Crear una clave de entidad cuando no se deduce ninguna clave de una tabla (Entity Framework)
En este tema se explica cómo modificar manualmente un archivo .edmx para cambiar una clave de entidad cuando el Asistente para Entity Data Model o el Asistente para actualizar modelo no puedan deducir ninguna clave de entidad.
Al generar o actualizar un archivo .edmx con el Asistente para Entity Data Model o el Asistente para actualizar modelo, se asigna la clave de un tipo de entidad a la clave principal de la tabla correspondiente. Si no está definida una clave principal (por ejemplo, en una vista), las herramientas intentarán deducir una clave de entidad única basándose en las columnas de la tabla o la vista. La clave deducida estará compuesta por todas las columnas que no aceptan valores NULL y no binarias de la tabla o la vista. Si la tabla o la vista solo contienen columnas que aceptan valores NULL y binarios, no se deducirá ninguna clave.
Si no se deduce ninguna clave de entidad, la entidad no se agregará al modelo. En su lugar, se agregará un comentario de código que contiene el elemento EntityType (sin la clave definida) a la sección SSDL del archivo .edmx.
Para obtener más información acerca de las claves de entidad, vea EntityType Element (CSDL) y EntityType Element (SSDL).
En los procedimientos de este tema se da por hecho que hay un archivo .edmx válido abierto en Visual Studio.
Nota: |
---|
Los cambios realizados en la sección SSDL de un archivo .edmx, tal y como se sugieren en los procedimientos siguientes, se sobrescriben si se actualiza el modelo con el Asistente para actualizar modelo.Para evitar tener que editar manualmente el archivo .edmx en este caso, modifique su esquema de base de datos de forma que cada tabla tenga una clave principal o que una o más columnas de cada tabla o vista no acepten valores NULL ni valores no binarios. |
Agregar una clave de entidad cuando no se deduce ninguna clave de una tabla
El procedimiento siguiente se aplica a un tipo de entidad que corresponde a una tabla. En este procedimiento se supone que el archivo .edmx está abierto en el Editor XML.
Si Entity Designer no puede deducir una clave de entidad basada en las columnas de una tabla, la entidad no se agregará al modelo. En su lugar, se agregará un comentario de código que contiene el elemento EntityType (sin la clave definida) a la sección SSDL del archivo .edmx.
Para agregar una clave de entidad cuando no se deduce una clave en una tabla
Quite los comentarios del elemento EntityType en la sección SSDL del archivo .edmx.
Defina la clave para el tipo de entidad, agregando los elementos Key adecuados al elemento EntityType. Para obtener más información, vea EntityType Element (SSDL).
Nota: La columna o columnas utilizadas para definir la clave de entidad deben identificar inequívocamente una fila de la tabla. En la sección SSDL, agregue un elemento EntitySet que especifica la tabla a la que se asigna el tipo de la entidad agregada. Para obtener más información, vea EntitySet Element (EntityContainer SSDL).
En la sección CSDL, agregue un elemento EntityType correspondiente al tipo de entidad SSDL agregado. Para obtener más información, vea EntityType Element CSDL.
En la sección de asignación de C-S (conceptual a almacenamiento), agregue un elemento EntitySetMapping que especifique la asignación entre los tipos de entidad SSDL y CSDL agregados. Para obtener más información, vea EntitySetMapping Element (MSL).
Agregar una clave de entidad cuando no se deduce una clave de una vista
El procedimiento siguiente se aplica a un tipo de entidad que corresponde a una vista. En este procedimiento se supone que el archivo .edmx está abierto en el Editor XML.
Si Entity Designer no puede deducir una clave de entidad basada en las columnas de una vista, la entidad no se agregará al modelo. En su lugar, se agrega un comentario de código que contiene el elemento EntityType (sin la clave definida) a la sección SSDL del archivo .edmx.
Para agregar una clave de entidad cuando no se deduce una clave en una vista
Quite los comentarios del elemento EntityType en la sección SSDL del archivo .edmx.
Defina la clave para el tipo de entidad, agregando los elementos Key adecuados al elemento EntityType. Para obtener más información, vea EntityType Element (SSDL).
Nota: La columna o columnas utilizadas para definir la clave de entidad deben identificar inequívocamente una fila de la vista. Agregue una consulta de definición al modelo. Para obtener más información, vea Cómo: Agregar una consulta de definición (Entity Framework).
Vea también
Conceptos
Información general sobre el archivo .edmx (Entity Framework)