actualizar - ADO.NET Entity Framework: el asistente de actualización no agregará tablas
actualizar modelo entity framework (10)
Agregué un nuevo Modelo de Datos de Entidades ADO.Net en mi proyecto y usé el Asistente de Actualización para agregar tablas al modelo. Cinco de las tablas seleccionadas se agregaron a la superficie de diseño. Otras dos tablas no se agregarán. 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 donde una tabla no se puede agregar 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>-->
Gracias Craig por tu respuesta.
1. Cambie la estructura de la Tabla y agregue una Columna Primaria. Actualiza 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.
Busque "Nulls" en su tabla particular. Si todas las columnas están configuradas en ''Permitir nulo'' Entity Framework lo considera como una tabla ''Null''. Tuve el mismo problema y desmarqué ''Permitir nulo'' y agregó la tabla requerida.
Establezca las Claves primarias en todas las tablas o solo una casilla de verificación no activada "Permitir nulo" en cualquier columna de cada tabla. Esto funciona para mi :)
Esto se ha resuelto en la última versión (entorno: VS 2012, .NET framework 4.5). Simple abra el archivo .edmx y agregue las tablas requeridas / procedimientos almacenados / vistas. La tabla / vista que no tiene clave principal se creará como tabla / vista de solo lectura.
La tabla / vista ''TABLE_NAME'' no tiene definida una clave principal. La clave se ha inferido y la definición se creó como una tabla / vista de solo lectura.
La superficie de diseño es diferente del modelo de entidad. Es posible tener una tabla en la asignación 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 son 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 la idea general de la solución: vaya al XML y busque referencias a las tablas en cuestión.
Mi solución a esto es eliminar todo el modelo y leerlo incluyendo las nuevas tablas que quiero.
Accidentalmente borré una mesa en el diseñador una vez y no pude leerla. Por lo tanto, eliminar todo el modelo y leerlo.
Tuve algunos problemas con esto también ( Ado.Net Entity Data Model no se actualiza correctamente )
No necesita eliminar todo el modelo (¡que podrían ser cientos de tablas!).
El asistente puede manejar elementos "añadidos nuevos", pero algunos cambios como cambiar claves compuestas y renombrar columnas - no sabe qué hacer - por lo que no lo intenta - y las cosas no se sincronizan.
SO: BORRAR las tablas en cuestión del Modelo (modo conceptual) Y de la Tienda.Modelo, y luego Actualizar el modelo usando el Asistente, y volver a agregar solo las tablas en cuestión.
Solo lanzando 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, borré la tabla de mi modelo y luego fui a actualizar y no me permitió verificar ninguna de las tablas.
Tengo una llave primaria.
Creé una nueva tabla de prueba, que apareció y me permitió comprobarlo pero no mi original.
Nunca antes lo abrí en XML y no sabía cómo hacerlo. Haga clic derecho en el archivo .edmx y "abrir con" - elija el editor xml.
la mesa en cuestión estaba bien, incluso tenía los nuevos campos (extraño).
Eliminé todas las referencias al mismo (lo tomé un par de veces): después de eliminar una y guardar, si intentas abrirla y no se muestra, sigue adelante y elije "ver XML", mira los errores y básicamente sigue la pelota que rebota hasta que la hayas limpiado.
Espero que los detalles adicionales ayuden a alguien.
Joe
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 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 hacerlo, inicie MS SQL Server Managment Studio, conectado con su servidor SQL y seleccione la base de datos con la que intenta establecer una conexión en Visual Studio. En ''your_dbname'' -> Security -> Users, 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 por defecto) y en la pestaña ''Membresía de la función de base de datos'' asegúrese de que ''db_datareader'' y ''db_datawrite'' estén seleccionados.
Nota: cuando se conecta también MS SQL Server Managment Studio, asegúrese de iniciar sesión con un usuario que puede habilitar / deshabilitar estas opciones ...
Una manera fácil que encontré fue (en SQL Server Management Studio) agregar una columna de ID de tipo INT, anular la selección de "Permitir valores nulos" y bajo Propiedades de columna (de ID) >> Especificación de identidad >> verificar (¿Es identidad?) Y hacer seguro incremento está configurado.
Una vez hecho lo anterior, vuelva a la ventana .edmx, haga clic con el botón derecho y actualice el modelo desde la base de datos.