Entity Framework 7 Base de datos Primera configuración (MVC 6)

asp.net-core asp.net-core-mvc entity-framework-core

Pregunta

Después de una larga y constante lucha, finalmente descubrí cómo utilizar el primer enfoque de la base de datos EF7 utilizando MVC 6. Así es como funciona:

App.Impl -> project.json:

"frameworks": {
    "net451": { },
    "dnx451": { }
},
"dependencies": {
    "EntityFramework.Commands": "7.0.0-rc1-final",
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
    "EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc1-final"
},

Luego ejecutando el comando desde cmd:

"frameworks": {
    "net451": { },
    "dnx451": { }
},
"dependencies": {
    "EntityFramework.Commands": "7.0.0-rc1-final",
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
    "EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc1-final"
},

3 problemas que estoy enfrentando con esto. En mi proyecto Impl.

  1. Tengo una carpeta dedicada a los datos. Mi carpeta de datos debe contener todas las cosas relacionadas con la base de datos, como DbContext, DbClasses. Sin embargo, Scaffold crea estos archivos en la raíz. ¿Cómo puedo especificar la carpeta en la que quiero que se creen estos archivos?

  2. En mi lugar de trabajo, podría tener una base de datos con 50 tablas. Sin embargo, ¿qué pasa si solo necesito acceso a 2? No quiero agregar todas las 50 tablas para mi proyecto. ¿Cómo puedo especificar qué tablas quiero?

  3. En mi base de datos, podría tener una tabla llamada "Usuarios" porque es una tabla que contiene usuarios. Sin embargo, el andamio debería estar creando una clase como "Usuario", ya que es un usuario único hasta que se convierte en Lista. ¿Cómo puedo especificar el nombre de la tabla que se está creando?

Gracias a todos por la ayuda.

Respuesta aceptada

Tratar de usar

dnx ef dbcontext scaffold 
    "Server=Server\InstanceName;Database=db;Trusted_Connection=True;"
    EntityFramework.MicrosoftSqlServer 
    --dataAnnotations
    --outputDir Data
    --verbose
    --table dbo.Users

Todos los parámetros anteriores deben estar en la misma línea, pero envolví la línea larga para leerla más fácilmente. Puede ver el código fuente para ver qué opciones son compatibles con el comando scaffold en RC1.

Tenga cuidado al copiar y pegar el ConnectionString de appsettings.json porque podría tener Server=Server\\InstanceName; en ConnectionString , pero el dnx ef dbcontext scaffold acepta actualmente solo Server=Server\InstanceName; y obtendrá el error System.InvalidOperationException en el uso de Server=Server\\InstanceName; directamente copiado de ConnectionString de appsettings.json .

Parámetro importante adicional es -p | --targetProject , que es importante si usa el repositorio en la biblioteca de clases. En el caso de que defina el comando ef en el proyecto principal e inicie dnx ef dbcontext scaffold en el directorio del proyecto principal, pero use -p para hacer referencia al proyecto de biblioteca de clases.

El último comentario. A veces, se necesita un subconjunto de tablas de la base de datos. No está completamente claro en la ayuda de la línea de comandos, pero se puede especificar el parámetro -t ( -table ) varias veces . Vea la nota en la wiki EF7. Por lo tanto, si desea importar sólo dos mesas dbo.Users y dbo.Posts (ya sea Posts tienen clave externa a Users ), puede utilizar la siguiente sintaxis

dnx ef dbcontext scaffold 
    "Server=Server\InstanceName;Database=db;Trusted_Connection=True;"
    EntityFramework.MicrosoftSqlServer 
    --dataAnnotations
    --outputDir Data
    --verbose
    --table dbo.Users

ACTUALIZADO: Se debe usar el dotnet ef dbcontext scaffold lugar del dotnet ef dbcontext scaffold dnx ef dbcontext scaffold en ASP.NET Core RC2 y dnx ef dbcontext scaffold posteriores.




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué