经过长时间的不断斗争,终于想出了如何使用EF7数据库第一种方法使用MVC 6.这是怎么回事:
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" },
然后从cmd运行命令:
dnx ef dbcontext scaffold "Server=ip,port;Database=db;User Id=user;Password=pass;" EntityFramework.MicrosoftSqlServer
我面临的3个问题.在我的Impl项目上.
我有一个专门用于数据的文件夹.My Data文件夹应包含所有与数据库相关的内容,例如DbContext,DbClasses.但是,Scaffold在根目录下创建这些文件.如何指定我想要创建这些文件的文件夹?
在我的工作地点,我可以有一个包含50个表的数据库.但是,如果我只需要访问2,该怎么办?我不想为我的项目添加所有50个表.如何指定我想要的表格?
在我的数据库中,我可以有一个名为"Users"的表,因为它是一个包含用户的表.但是,scaffold应该创建一个类作为"User",因为它是一个单独的用户,直到它成为List.如何指定正在创建的表的名称?
谢谢大家的帮助.
尝试使用
dnx ef dbcontext scaffold "Server=Server\InstanceName;Database=db;Trusted_Connection=True;" EntityFramework.MicrosoftSqlServer --dataAnnotations --outputDir Data --verbose --table dbo.Users
以上所有参数都应该在同一行,但我将长行包装起来更容易阅读.您可以查看源代码以查看哪些选项支持scaffold
RC1中的命令.
小心地在复制和粘贴ConnectionString
从appsettings.json
,因为你可以有Server=Server\\InstanceName;
在ConnectionString
,但dnx ef dbcontext scaffold
目前只接受Server=Server\InstanceName;
,你会得到System.InvalidOperationException
错误上的使用Server=Server\\InstanceName;
直接从复制ConnectionString
的appsettings.json
.
其他重要参数是-p | --targetProject
,如果您在类库中使用存储库,这一点很重要.如果您ef
在主项目中定义命令,并且您从主项目dnx ef dbcontext scaffold
的目录开始,但您用于-p
引用类库项目.
最后一句话.有时需要从数据库中构建表的子集.从命令行帮助中没有完全清楚,但可以多次指定-t
(-table
)参数.见注释在EF7维基.因此,如果您只想导入两个表(dbo.Users
并且dbo.Posts
是否Posts
具有外键Users
),则可以使用以下语法
dnx ef dbcontext scaffold "Server=Server\InstanceName;Database=db;Trusted_Connection=True;" EntityFramework.MicrosoftSqlServer -a -o Models -v -t dbo.Users -t dbo.Posts
更新:应该使用dotnet ef dbcontext scaffold
而不是dnx ef dbcontext scaffold
在ASP.NET Core RC2及更高版本中.