。NET Core和Entity Framework Core中首先具有标识的数据库

问题描述 投票:4回答:1

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

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

现在可以正常工作。我只是在努力整合身份。当前,我有两个单独的上下文,一个是由脚手架命令生成的,另一个是一个如下所示的身份上下文:

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生成实体模型和映射的任何信息。

让我知道是否可以澄清任何事情。


原始语境

很清楚,我最初的问题没有任何好处。

我想澄清一下我的带有.NET Core和Entity Framework的Database First工作流程是否正确。我已经阅读了所有有关使用数据库优先的文章,这些文章似乎都以“结尾”结尾:“现在您已经架好了数据库,因此可以开始使用代码优先迁移了”。我想继续编写我的SQL,然后继续将其映射到实体。

为了管理和更新我的应用程序,我使用了出色的DbUp项目。所以我写了我的脚本,将它们应用于数据库

到目前为止,看来一切正常。我唯一的问题是很好地集成身份。目前,我只有两个上下文,一个是我的应用程序,另一个是身份。我的应用程序还映射了所有身份表。它工作正常,但是我不确定在开始将表链接到用户时会发生什么……我相信我确实做到了在一个上下文中工作,但是每次都必须修改生成的应用程序上下文,并删除所有标识映射并从IdentityDbContext继承(以生成标识映射)。我可以更改身份表/我的表的架构,只为我的表(不包括身份表)生成映射。然后,我可能需要在ApplicationUser上手动编写映射属性,对吗?

[基本上,我真的不觉得Database First是.NET中的头等公民。我是否只是在不修改生成的代码的情况下就缺少这种“工作”的显而易见的东西?还是我想得太多,只需要继续做下去?

为无礼的道歉,我猜是其中的一天。

entity-framework asp.net-core asp.net-identity entity-framework-core
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.