Я делю свой 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; }
}