【问题标题】:How do I resolve Cannot create a DbSet for 'CUserMasterLocal' because this type is not included in the model for the context如何解决无法为“CUserMasterLocal”创建 DbSet,因为此类型未包含在上下文模型中
【发布时间】:2020-03-09 15:39:04
【问题描述】:

我正在尝试将我的应用程序和身份处理保持在各自独立的上下文中,但我遇到了错误消息

无法为“CUserMasterLocal”创建 DbSet,因为该类型未包含在上下文模型中。

从我的在线研究看来,我需要让ApplicationDBContextIdentityDbContext 继承而不是DBContext,但如上所述,我希望必须在自己的上下文中进行身份管理。至少有一篇 Stack Overflow 帖子告诉我这是不允许的,是否有任何社区设法在自己的上下文中保持身份?

这是我的身份上下文:

public class AppIdentityDbContext : IdentityDbContext<CUserMasterLocal, CRoleMasterLocal, string>
{
    public AppIdentityDbContext(DbContextOptions<AppIdentityDbContext> options)
    : base(options) { }
    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);

        // Customizations must go after base.OnModelCreating(builder)

        var x = builder.Entity<CUserMasterLocal>(config =>
        {
            // Set the default table name of AspNetUsers
            config.ToTable("AspNetUsers");
        });


        builder.Entity<CRoleMasterLocal>(config =>
        {
            config.ToTable("RoleMaster");
        });
    }
    public DbSet<CUserMasterLocal> UserMaster { get; set; }
    public DbSet<CRoleMasterLocal> RoleMaster { get; set; }
}

在 startup.cs 我有

var identityConnectionString = this.Configuration["Data:VT_LocalIdentityData:ConnectionString"];
services.AddDbContext<AppIdentityDbContext>(options =>
    options.UseSqlServer(identityConnectionString));
services.AddIdentity<CUserMasterLocal, CRoleMasterLocal>()
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultTokenProviders();

在我的控制器中,我通过“块”隔离了身份活动

using (var localIdContext = new AppIdentityDbContext(optionsBuilder.Options))
{
    CUserMasterLocal userMaster = CreateUserMasterEntry(person, 
        userDetails.GetUsername());

    IdentityResult result = this.userManager.CreateAsync(userMaster, 
        GeneratePassword(12)).Result;
}

为免生疑问,在设置ApplicationDBContext 的类中没有引用CUserMasterLocal,我想保持这种方式。

【问题讨论】:

    标签: c# entity-framework-core asp.net-identity asp.net-core-webapi


    【解决方案1】:

    当您注册身份服务时,您的意思是将ApplicationDbContext 作为您的 EntityFrameworkStores 吗?

    尝试替换

    services.AddIdentity<CUserMasterLocal, CRoleMasterLocal>()
                .AddEntityFrameworkStores<ApplicationDbContext>() // <--- this doesn't seem right.
                .AddDefaultTokenProviders();
    

    services.AddIdentity<CUserMasterLocal, CRoleMasterLocal>()
                .AddEntityFrameworkStores<AppIdentityDbContext>() // <--- this is changed
                .AddDefaultTokenProviders();
    

    【讨论】:

      猜你喜欢
      • 2022-01-08
      • 2019-08-16
      • 2019-07-13
      • 2019-07-10
      • 1970-01-01
      • 1970-01-01
      • 2018-10-20
      • 1970-01-01
      • 2019-01-04
      相关资源
      最近更新 更多