asp.net-core - Entity Framework 7 数据库优先配置 (MVC 6)

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

经过长期不断的奋斗,终于弄清楚如何使用 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 项目上。

  1. 我有一个专门用于数据的文件夹。我的数据文件夹应包含所有与数据库相关的内容,例如 DbContext、DbClasses。但是,Scaffold 在根目录下创建这些文件。如何指定要创建这些文件的文件夹?

  2. 在我的工作场所,我可以拥有一个包含 50 个表的数据库。但是,如果我只需要访问 2 个怎么办?我不想为我的项目添加全部 50 个表。如何指定我想要哪些表?

  3. 在我的数据库中,我可以有一个名为“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.jsonConnectionString复制。

另一个重要参数是-p | --targetProject,如果您在类库中使用存储库,这一点很重要。如果您在主项目中定义 ef 命令,并在主项目目录中启动 dnx ef dbcontextscaffold,但使用 -p 引用类库项目。

最后一句话。有时需要从数据库中构建子集表。从命令行帮助中并不完全清楚,但是可以多次指定-t(-table)参数。请参阅the note在 EF7 wiki 中。因此,如果您只想导入两个表 dbo.Usersdbo.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/

相关文章:

c# - Entity Framework 7 FromSql 存储过程返回值

c# - 如何使用 X509SecurityKey 进行 Asp.Net Core JWT 验证?

c# - .NET 3.1 中的 ObjectDisposedException/SocketsHttpHandler

c# - .Net Core获取ApplicationUser的对象

c# - 尝试使用字符串变量进行 SetPropertyCall 时,ExecuteUpdate 拦截器崩溃

c# - Entity Framework Core RC2 表名复数化

c# - Entity Framework Core 排除结果

c# - 如何在 ASP.NET Core 中返回存储为 byte[] 的文件?

iis - 当 .NET Core 托管包的版本落后于开发计算机版本时会发生什么

asp.net-mvc - 如何在asp.net core中处理cookie过期