Primeira configuração da Base de dados do Entity Framework 7 (MVC 6)
Depois de uma longa luta constante, finalmente descobriu como usar a primeira abordagem da base de dados EF7 usando MVC 6. É assim que funciona:
App.Impl -> projecto.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"
},
Depois executando o comando do cmd:
dnx ef dbcontext scaffold "Server=ip,port;Database=db;User Id=user;Password=pass;" EntityFramework.MicrosoftSqlServer
Tenho três problemas com isto. No meu projecto Impl.
tenho uma pasta dedicada aos dados. A minha pasta de dados deve conter todas as coisas relacionadas com a base de dados, tais como DbContext, DbClasses. No entanto, o andaime cria estes ficheiros no raiz. Como posso especificar a pasta que quero estes arquivos criados?
no meu local de trabalho, podia ter uma base de dados com 50 mesas. No entanto, e se eu só precisar de acesso a 2? Eu não quero adicionar todas as 50 tabelas para o meu projeto. Como posso especificar quais as mesas que quero?
Na minha base de dados, eu poderia ter uma tabela chamada "usuários" porque é uma tabela que contém usuários. No entanto, o andaime deve estar criando uma classe como" usuário", uma vez que é um único usuário até que se torne uma lista. Como posso especificar o nome da tabela que está sendo criada?
1 answers
Tente usar
dnx ef dbcontext scaffold
"Server=Server\InstanceName;Database=db;Trusted_Connection=True;"
EntityFramework.MicrosoftSqlServer
--dataAnnotations
--outputDir Data
--verbose
--table dbo.Users
Todos os parâmetros acima devem estar na mesma linha, mas eu embrulhei a longa linha para lê-la mais facilmente. Você poderá olhar para o código-fonte para ver quais as opções que suportam o comando scaffold
no RC1.
Ser cuidadosamente copie e cole o ConnectionString
de appsettings.json
porque você poderia ter Server=Server\\InstanceName;
em ConnectionString
, mas dnx ef dbcontext scaffold
aceitar atualmente só Server=Server\InstanceName;
e você vai ficar System.InvalidOperationException
erro sobre o uso de Server=Server\\InstanceName;
diretamente copiados de ConnectionString
de appsettings.json
.
O parâmetro importante adicional é -p | --targetProject
, o que é importante se usar o repositório na biblioteca de classes. No caso em que define o comando ef
no projecto principal, inicia dnx ef dbcontext scaffold
na pasta do projecto principal, mas usa -p
para referenciar o projecto da biblioteca de classes.
A última observação. Por vezes, é necessário deslocar um subconjunto das tabelas da base de dados. Não está totalmente claro da ajuda da linha de comando, mas pode-se especificar -t
(-table
) parâmetro múltiplas vezes . Ver a nota no wiki EF7. Assim, se quiser importar apenas duas tabelas dbo.Users
e dbo.Posts
(se Posts
tem chave estrangeira para Users
), então poderá usar a seguinte sintaxe
dnx ef dbcontext scaffold
"Server=Server\InstanceName;Database=db;Trusted_Connection=True;"
EntityFramework.MicrosoftSqlServer
-a
-o Models
-v
-t dbo.Users
-t dbo.Posts
Actualizado: {[34] } deve-se usar dotnet ef dbcontext scaffold
em vez de dnx ef dbcontext scaffold
em ASP.NET núcleo RC2 e mais tarde.