经过长期不断的奋斗,终于弄清楚如何使用 MVC 6 来使用 EF7 数据库第一种方法。事情是这样的:
App.Impl -> 项目.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"
},
然后从 cmd 运行命令:
dnx ef dbcontext scaffold "Server=ip,port;Database=db;User Id=user;Password=pass;" EntityFramework.MicrosoftSqlServer
我面临着三个问题。在我的 Impl 项目上。
我有一个专门用于数据的文件夹。我的数据文件夹应包含所有与数据库相关的内容,例如 DbContext、DbClasses。但是,Scaffold 在根目录下创建这些文件。如何指定要创建这些文件的文件夹?
在我的工作场所,我可以拥有一个包含 50 个表的数据库。但是,如果我只需要访问 2 个怎么办?我不想为我的项目添加全部 50 个表。如何指定我想要哪些表?
在我的数据库中,我可以有一个名为“Users”的表,因为它是一个包含用户的表。然而,脚手架应该创建一个类作为“用户”,因为它是一个单一用户,直到它成为列表。如何指定正在创建的表的名称?
谢谢大家的帮助。
最佳答案
尝试使用
dnx ef dbcontext scaffold
"Server=Server\InstanceName;Database=db;Trusted_Connection=True;"
EntityFramework.MicrosoftSqlServer
--dataAnnotations
--outputDir Data
--verbose
--table dbo.Users
以上所有参数应该在同一行中,但我将长行换行以便更容易阅读。您可以查看the source code查看哪些选项支持 RC1 中的 scaffold
命令。
复制并粘贴 appsettings.json
中的 ConnectionString
时请务必小心,因为 Server=Server\\InstanceName;
可能位于 中>ConnectionString
,但 dnx ef dbcontextscaffold
当前仅接受 Server=Server\InstanceName;
并且您将得到 System.InvalidOperationException
错误使用Server=Server\\InstanceName;
直接从appsettings.json
的ConnectionString
复制。
另一个重要参数是-p | --targetProject
,如果您在类库中使用存储库,这一点很重要。如果您在主项目中定义 ef
命令,并在主项目目录中启动 dnx ef dbcontextscaffold
,但使用 -p
引用类库项目。
最后一句话。有时需要从数据库中构建子集表。从命令行帮助中并不完全清楚,但是可以多次指定-t
(-table
)参数。请参阅the note在 EF7 wiki 中。因此,如果您只想导入两个表 dbo.Users
和 dbo.Posts
(Posts
是否具有 Users
的外键) code>) 那么你可以使用以下语法
dnx ef dbcontext scaffold
"Server=Server\InstanceName;Database=db;Trusted_Connection=True;"
EntityFramework.MicrosoftSqlServer
-a
-o Models
-v
-t dbo.Users
-t dbo.Posts
更新:在 ASP.NET Core RC2 及更高版本中,应使用 dotnet ef dbcontextscaffold
而不是 dnx ef dbcontextscaffold
。
关于asp.net-core - Entity Framework 7 数据库优先配置 (MVC 6),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34456799/