Yo añadí un nuevo modelo de entidad de datos ADO.Net en mi proyecto y se utiliza el asistente de actualización para agregar tablas en el modelo. Se agregaron cinco de las tablas seleccionadas a la superficie de diseño. No se agregarán otras dos tablas. Los selecciono en el asistente y hago clic en Finalizar, pero nunca aparecen en la superficie de diseño.
¿Es esto un error o hay algunas situaciones en las que no se puede agregar una tabla al modelo (por diseño)?
ACTUALIZACIÓN: El XML (* .edmx) revela el problema.
<!--Errors Found During Generation:
warning 6013: The table/view 'FooBar.dbo.Roles' does not
have a primary key defined and no valid primary key could be inferred.
This table/view has been excluded. To use the entity you will need to
review your schema, add the correct keys and uncomment it.-->
<!--<EntityType Name="Roles">
<Property Name="role_id" Type="decimal" />
<Property Name="role_desc" Type="nvarchar" MaxLength="30" />
</EntityType>-->
.net
visual-studio-2008
entity-framework
ado.net
primary-key
Robert Claypool
fuente
fuente
Respuestas:
La superficie de diseño es diferente del modelo de entidad. Es posible tener una tabla en el mapeo en su EDMX que no aparece en la superficie de diseño. Vea el archivo como XML para ver si este es el caso. En este caso, el Asistente de actualización no le permitirá volver a agregar las tablas, ya que ya forman parte del modelo de entidad. Entonces, en términos generales, el Asistente de actualización sabe más sobre su modelo de entidad que sobre la superficie de diseño, per se .
No creo que esa sea exactamente la situación en la que se encuentra, pero debería darle una idea general de la solución: ingrese al XML y busque referencias a las tablas en cuestión.
fuente
Configure las claves primarias para todas las tablas o solo una casilla de verificación sin marcar "Permitir nulo" en cualquier columna de cada tabla. Esto funciona para mi :)
fuente
1.Cambie la estructura de la tabla y agregue una columna principal. Actualice el modelo.
2.Modifique el archivo .EDMX en el Editor XML e intente agregar una nueva columna debajo de la etiqueta para esta tabla específica. (NO TRABAJARÁ)
3.En lugar de crear una nueva columna principal para salir de la tabla, haré una clave compuesta involucrando todas las columnas existentes (TRABAJADO)
Entity Framework: agregar DataTable sin clave principal al modelo de entidad.
fuente
Yo también tuve este problema, todo lo anterior no funcionó para mí. Lo que me ayudó fue lo siguiente.
Cuando intenta conectarse con una base de datos, esa base de datos puede tener diferentes usuarios con diferentes credenciales que puede aceptar. Digamos que el usuario A hasta D.
Si intenta conectarse con un usuario, asegúrese de que el usuario tenga habilitadas las credenciales correctas, en este caso, las opciones de lectura y escritura habilitadas.
Para hacer esto, inicie MS SQL Server Managment Studio, conéctese con su servidor SQL y seleccione la base de datos con la que intenta conectarse en Visual Studio. En 'your_dbname' -> Seguridad -> Usuarios, encontrará una lista de usuarios. Haga clic con el botón derecho en el nombre de usuario con el que intenta iniciar sesión y seleccione propiedades. Se abre una ventana. Seleccione la página 'General' (seleccionada de forma predeterminada) y en la pestaña 'Membresía de función de base de datos' asegúrese de que 'db_datareader' y 'db_datawrite' estén seleccionados.
Nota: Cuando inicie sesión también en MS SQL Server Managment Studio, asegúrese de iniciar sesión con un usuario que pueda habilitar / deshabilitar estas opciones ...
fuente
Busque 'Nulos' en su tabla particular. Si todas las columnas están configuradas en 'Permitir nulo', Entity Framework lo considera como una tabla 'Nulo'. Tuve el mismo problema y desmarqué 'Permitir nulo' y agregó la tabla requerida.
fuente
No se agregarán tablas sin claves primarias.
fuente
Mi solución a esto es eliminar todo el modelo y leerlo, incluidas las nuevas tablas que quiero.
Una vez borré accidentalmente una tabla en el diseñador y no pude leerla. Por lo tanto, eliminar el modelo completo y leerlo.
También tuve algunos problemas con esto (el modelo de datos de la entidad Ado.Net no se actualiza correctamente )
fuente
Esto se ha resuelto en la última versión (entorno: VS 2012, .net framework 4.5). Simplemente abra el archivo .edmx y agregue las tablas / procedimientos almacenados / vistas requeridos. La tabla / vista que no tiene clave principal se creará como tabla / vista de solo lectura.
fuente
No es necesario eliminar todo el modelo (¡pueden ser cientos de tablas!).
El asistente puede manejar "agregar nuevos" elementos, pero algunos cambios, como cambiar claves compuestas y renombrar columnas, no sabe qué hacer, por lo que no lo intenta, y las cosas se desincronizan.
ASÍ: BORRE las tablas en cuestión del Modelo (modo conceptual) Y de Model.Store, y luego actualice el modelo usando el Asistente y vuelva a agregar solo las tablas en cuestión.
fuente
Solo lanzo más detalles para cualquiera que no haya tenido que hacer esto antes. Estoy usando Visual Studio 2013 con la actualización 4 instalada. Agregué algunos campos a una tabla, eliminé la tabla de mi modelo y luego fui a actualizar y no me dejaba verificar ninguna de las tablas.
Tengo una clave principal.
Creé una nueva tabla de prueba, que apareció y me permitió verificarla, pero no la original.
Nunca antes lo había abierto en XML y no sabía cómo hacerlo. Haga clic derecho en el archivo .edmx y "abrir con" - elija el editor xml.
la tabla en cuestión estaba allí bien, incluso tenía los nuevos campos (extraño).
Eliminé todas las referencias (tomé un par de veces); después de eliminar una y guardar, si intenta abrirla y no se muestra, siga adelante y elija "ver XML", mire los errores y básicamente siga la pelota que rebota hasta que la haya limpiado.
Espero que el detalle extra ayude a alguien.
Joe
fuente
Una forma fácil que encontré fue (en SQL Server Management Studio) agregar una columna de ID de tipo INT, anular la selección de "Permitir nulos", y en Propiedades de columna (de ID) >> Especificación de identidad >> comprobar (Es identidad) y hacer seguro que el incremento está configurado.
Una vez hecho lo anterior, vuelva a su ventana .edmx, haga clic con el botón derecho y actualice el modelo desde la base de datos.
fuente
Puede agregar una tabla cruzada de columnas de clave principal. Entonces el problema se está resolviendo
fuente
Otra solución es asegurarse de que la cuenta a través de la que está accediendo a la base de datos tenga algunos permisos para la tabla, seleccione al menos. La tabla no se agregará si la cuenta no tiene permisos para ella.
En SSMS, en Seguridad, haga clic con el botón derecho en el usuario o rol y luego en Propiedades. Luego haga clic en Securables. La tabla superior muestra las tablas actualmente accesibles. Si las tablas que faltan no están allí, haga clic en buscar y busque, resáltelas en la tabla superior y luego asigne permisos en la tabla inferior
fuente