gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 20:10:05 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com