实体框架7 DbContext脚手架

awh*_*112 12 c# asp.net entity-framework entity-framework-core asp.net-core

我正在尝试DbContext使用ASP.NET 5和Entity Framework 7为现有的数据库结构生成.毫不奇怪,没有很多关于如何轻松完成此操作的文档.另外,我想仅仅支持上下文; 有大约900个表,我只关心它们中的一些,我不需要每个表的模型类.

我一直在使用指定的命令在这里,并在这里与点点运气.

所以,我想我有两个问题:

  1. 生成的上下文文件位于何处?我在命令提示符下运行命令没有失败,但没有其他事情发生.我知道我至少在正确的位置,因为我可以添加旧的EF6模型具有不受支持的属性,它给我一个错误,他们不支持.

  2. 是否可以仅生成没有相应模型类的上下文?

Nic*_*eer 12

我的项目生成上下文和模型时遇到了同样的问题.这是我做过的一些事情.

更新对于下面的1.0 RC1

Project.json

  "dependencies": {
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
    "EntityFramework.Commands": "7.0.0-rc1-final",
    "EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc1-final"
  },

  "commands": {
    "ef": "EntityFramework.Commands"
  },

  "frameworks": {
    "dnx451": { },
    "dnxcore50": { }
  }
Run Code Online (Sandbox Code Playgroud)

DNX命令

dnx ef dbcontext scaffold "connectionString" EntityFramework.MicrosoftSqlServer
Run Code Online (Sandbox Code Playgroud)

原帖在下面

确保将这些文件添加到project.json文件中:

"dependencies": {
    "EntityFramework.SqlServer": "7.0.0-beta7",
    "EntityFramework.Commands": "7.0.0-beta7",
    "EntityFramework.SqlServer.Design": "7.0.0-beta7"
},
"commands": {
    "ef": "EntityFramework.Commands"
}
Run Code Online (Sandbox Code Playgroud)

使用dnvm update-selfdnvm升级升级dnvm和dnx运行时.我在cmd中运行它.

在项目位置打开cmd.exe(如果您在Windows中,导航到该文件夹​​并在文件夹中右键单击并单击"在此处打开命令窗口").就我而言,我的数据访问层有一个单独的项目,例如.

C:\Projects\Stackoverflow Example\src\StackoverflowExample.DAL\
Run Code Online (Sandbox Code Playgroud)

我然后simplay跑了:

dnx ef dbcontext scaffold"Data Source = .; Initial Catalog = database; Integrated Security = True"EntityFramework.SqlServer

确保您的项目可以构建.如果有错误,命令可能不起作用.

它生成了所有模型以及上下文(使用每个实体的OnModelCreating()设置).如果您不需要所有模型,只需删除不使用的模型.

所以回答你的问题:

  1. 它在您运行dnx ef dbcontext scaffold的文件夹中创建模型和上下文.
  2. 我看不到任何允许你这样做的命令.在cmd中运行dnx ef --help并自己查找. dnx ef

我希望这有帮助.


小智 -4

我会尝试从现有数据库进行代码优先。您可以创建上下文类,如下所示:

public class MyDbContext : DbContext {

        public MyDbContext()
            : base("connectionString") {
            Database.SetInitializer<MyDbContext>(null);
        }

        public virtual DbSet<Table1> Table1s { get; set; }

        public virtual DbSet<Table2> Table2s { get; set; }

        ...
}
Run Code Online (Sandbox Code Playgroud)

您可以仅包含您需要的那些表的 DbSet。您可以创建所需的相应模型(Table1、Table2 等)以及来自这些模型的支架控制器和视图。