数据库首先使用.NET Core和Entity Framework Core中的Identity

时间:2018-03-23 13:15:27

标签: entity-framework asp.net-core asp.net-identity entity-framework-core

我想使用Database First方法使用EF Core管理我的数据库,而不仅仅是初始数据库创建。我正在使用此命令生成我的实体模型和映射代码:

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=MyDB;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models/Entities -f

现在这很好用。我只是在努力进行身份整合。目前我有两个单独的上下文,一个由scaffolding命令生成的上下文和一个如下所示的标识上下文:

public class IdentityContext : IdentityDbContext<ApplicationUser> {
    public IdentityContext(DbContextOptions<IdentityContext> options)
        : base(options) {
    }

    protected override void OnModelCreating(ModelBuilder builder) {
        base.OnModelCreating(builder);
        // Customize the ASP.NET Identity model and override the defaults if needed.
        // For example, you can rename the ASP.NET Identity table names and more.
        // Add your customizations after calling base.OnModelCreating(builder);
    }
}

这两个上下文都是从同一个数据库中读取的,并且注册如下:

services.AddDbContext<ApplicationContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddDbContext<IdentityContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

有两个独立的背景是否合理?当我开始在用户和其他模型之间建立关系时,它是否会导致未来的问题?我在文档中找不到有关继续使用db-scaffold来生成实体模型和映射的内容。

如果我能澄清任何事情,请告诉我。

原始语境

好的,我的原始问题没有任何好处。

我想澄清一下我的Database First工作流是否是正确的.NET Core和Entity Framework。我已经阅读了所有关于使用Database First的文章,这些文章似乎都以:“现在你已经搭建了数据库,因此可以开始使用Code First迁移”。我想继续编写我的SQL,并继续将其映射到实体。

要管理和更新我的应用程序,我正在使用优秀的DbUp项目。所以我编写脚本,将它们应用到数据库

到目前为止,这似乎工作正常。我唯一的问题是很好地整合身份。目前我只有两个上下文,我的应用程序一个和一个标识。我的应用程序还映射了所有标识表。它工作正常,但我不确定当我开始将表链接到用户时将会发生什么...我相信我确实使用一个上下文但我每次都必须修改生成的应用程序上下文,删除所有Identity标记映射并从IdentityDbContext继承(以生成标识映射)。我可以更改身份表/我的表的模式,只生成我的表的映射,不包括身份表。那么我可能需要在ApplicationUser上手动编写映射属性,这是正确的吗?

基本上,我不是真的觉得Database First不再是.NET中的一等公民了。在没有修改生成代码的情况下,我是否只是遗漏了一些显而易见的东西,只是“工作”?或者我是否过度思考这个并且只需要继续下去?

为漫不经心道歉,我想其中一天。

0 个答案:

没有答案