entity framework7 DbContext脚手架

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

我一直在使用这里指定的命令,但运气不好。

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

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

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

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

更新适用于以下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": { } } 

DNX命令

 dnx ef dbcontext scaffold "connectionString" EntityFramework.MicrosoftSqlServer 

原帖在下面

确保将这些文件添加到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" } 

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

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

 C:\Projects\Stackoverflow Example\src\StackoverflowExample.DAL\ 

我然后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

我希望这有帮助。

scaffold命令存在一个选项–table(-t):

 dnx ef dbcontext scaffold connectionstring provider -t dbo.tab1 -t dbo.tab2 

对于EF 7,您不再需要使用base进行初始化,这会导致编译器错误。 您需要查看Microsoft EF7启动文档。

你想要关注新的

 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { // Visual Studio 2015 | Use the LocalDb 12 instance created by Visual Studio optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;"); // Visual Studio 2013 | Use the LocalDb 11 instance created by Visual Studio // optionsBuilder.UseSqlServer(@"Server=(localdb)\v11.0;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;"); // Visual Studio 2012 | Use the SQL Express instance created by Visual Studio // optionsBuilder.UseSqlServer(@"Server=.\SQLEXPRESS;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;"); } 

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

 public class MyDbContext : DbContext { public MyDbContext() : base("connectionString") { Database.SetInitializer(null); } public virtual DbSet Table1s { get; set; } public virtual DbSet Table2s { get; set; } ... } 

您只能为所需的表包含DbSet。 您可以根据这些模型创建所需的相应模型(表1,表2等)和脚手架控制器和视图。