Ger Hayden Ответов: 1

Как я могу решить: не удается создать dbset для 'cusermasterlocal', потому что этот тип не включен в модель для контекста.


Я пытаюсь сохранить свое приложение и обработку идентификаторов в их собственных отдельных контекстах, но я запускаю agaisnt "не могу создать DbSet для 'CUserMasterLocal', потому что этот тип не включен в модель для контекста". сообщение об ошибке при этом.

Из моих онлайн-исследований следует, что мне нужно, чтобы ApplicationDBContext наследовался от IdentityDbContext быстрее, чем DBContext, но, как уже было сказано, Я хочу иметь управление идентификацией в своем собственном контексте. По крайней мере, один пост Stackoverflow говорит мне, что это не разрешено.

Что я уже пробовал:

Это мой личный контекст:
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;
}


Во избежание сомнений CUserMasterLocal не упоминается в классе, который устанавливает ApplicationDBContext, и я хотел бы сохранить его таким образом.


Здесь это пост, который заставляет меня поверить, что два контекста невозможны. То этот сообщение бросает холодную воду на мое намерение иметь свой собственный пользовательский класс.

Кто-нибудь, пожалуйста, скажите, что это не так, и направьте меня к решению.

1 Ответов

Рейтинг:
11

Ger Hayden

Ошибка в моем startup.cs, замеченная нашими коллегами в сайте StackOverflow.

services.AddIdentity<CUserMasterLocal, CRoleMasterLocal>()
 .AddEntityFrameworkStores<AppIdentityDbContext>()
 .AddDefaultTokenProviders();