适用于Asp.Net MVC 5应用程序中所有模型的Models.ApplicationDbContext?

我正在创建一个Asp.Net MVC 5网站。 我需要在ApplicationUser中添加自定义字段并将其与其他模型关联(添加外键) 我想我应该只使用一种上下文类型。 但是,代码脚手架已生成以下ApplicationDbContext类。 我可以把我所有的public DbSet ... { get; set; } public DbSet ... { get; set; } 在课堂上? 还是有更好的模式?

 namespace MyApp.Models { // You can add profile data for the user by adding more properties to your User class, please visit http://go.microsoft.com/fwlink/?LinkID=317594 to learn more. public class ApplicationUser : User { } public class ApplicationDbContext : IdentityDbContextWithCustomUser { } } 

有一个很好的video解释了这件事。 只需查看Scott Allen的免费ASP.NET MVC 5基础课程。 确切的答案在这里 (从3:30开始)。

我建议将它们分开。 没有理由将系统的两个部分连接在一起。 要添加另一个DbContext,只需将文件添加到名为YourContext.cs的模型中。

 public class YourContext: DbContext { public YourContext() : base("name=YourContext") { } // Add a DbSet for each one of your Entities public DbSet Rooms { get; set; } public DbSet Meals { get; set; } } 

然后在根web.config中

程序包管理器控制台中运行enable-migrations时 ,将询问您要迁移哪个dbcontext。 选择你的上下文

编辑:无需添加entity framework为您执行此操作的repos /工作单元。

请注意:这是在beta2中写的,其中ALLOT已经改变了! 希望它的大部分都会坚持下去,但直到RC才有保证。

不要使用NuGET包管理器 (直到RC),因为它不需要提供所需的.NET 5包,它将安装EF 6并弄乱您的项目。 (我们在EF 7之后)

projects.json您需要具有以下依赖项。 (或者当它出局时的beta2,或RC上的最新版本)

  "EntityFramework": "7.0.0-beta1", "EntityFramework.Relational": "7.0.0-beta1", "EntityFramework.Commands": "7.0.0-beta1", "EntityFramework.Migrations": "7.0.0-beta1", "EntityFramework.SqlServer": "7.0.0-beta1" 

添加一个新文件夹DBContexts并添加ac sharp文件和新的上下文内容。

  public class BlaBlaDB : DbContext { public DbSet MyOtherModels { get; set; } protected override void OnConfiguring(DbContextOptions options) { options.UseSqlServer(); } } 

并在您的config.json确保添加一个连接字符串,与您刚刚使用新名称的IdentityDB完全相同。 然后在startup.json注册你的数据库。

  services.AddEntityFramework(Configuration) .AddSqlServer() .AddDbContext() .AddDbContext(); 

这必须编译,因为k将运行此项目并使用启动来注入您的上下文,然后执行您需要的所有内容。 截至目前,VS2015 Beta没有全部/或者它们不起作用,EF的命令。

你需要去安装KRE for Windows。

打开命令提示符,浏览到项目目录,输入解决方案并输入以下命令。

 k ef context list k ef migration add -c (context.from.above) initial k ef migration apply -c (context.from.above) 

您现在有了多上下文迁移。 只需继续添加上下文并根据需要重复此操作。 我在localdb上使用它作为默认项目设置,以便它可以在任何环境中独立工作,如Linux。

请注意:您仍然需要创建一个包含接口和实现的服务,然后在startup.json注册它。 这里有更多信息