Ссылочные объекты из другого DbContext - PullRequest
0 голосов
/ 06 июня 2019

Я делю свой DbContext на две части: ApplicationContext (только сущности, специфичные для домена) и IdentityContext (только сущности основной идентификации asp.net).

Однако мне нужно добавить внешний ключк сущности ApplicationUser (IdentityContext), указывающей на сущность, созданную в ApplicationContext, называемую UserArea.Таким образом, у меня будет таблица для всех областей компании, а в таблице Aspnetusers будет столбец, ссылающийся на UserArea.Id.

Является ли дублирование сущностей (создайте сущность Area в обоих контекстах) между контекстом единственный способ достичь этого?

Как я могу иметь дело с порядком выполнения миграций, поскольку у меня может быть таблица, зависящая от IdentityContext миграций одновременно с таблицей из IdentityContext в зависимости от другой таблицы из ApplicationContext?

Вся идея здесь состоит в том, чтобы иметь меньшую связь между уровнем домена моего приложения и сторонними ресурсами, такими как Entity Framework и Identity.

public class ApplicationContext : DbContext
{
    public virtual DbSet<UserArea> UserAreas { get; set; }
}


public class IdentityContext : IdentityDbContext<ApplicationUser>, IDisposable
{
    private readonly IConfiguration _configuration;

    public IdentityContext(DbContextOptions<IdentityContext> options, IConfiguration configuration)
        : base(options)
    {
        _configuration = configuration;
    }
    public DbSet<UserAudit> UserAuditEvents { get; set; }
}

ApplicationUser class:

public class ApplicationUser : IdentityUser
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime DateRegistered { get; set; }

}

UserArea класс:

public class UserArea
{
    public int Id { get; set; }
    public string Name { get; set; }
}
...