Я использую EF Core и Identity.Я создал простое приложение:
public class Program
{
static void Main(string[] args)
{
}
}
public class User : IdentityUser
{
}
public class Person : User
{
}
public class Document
{
public int Id { get; set; }
public User Owner { get; set; }
}
public class ApplicationDbContext : IdentityDbContext<Person>
{
public DbSet<Person> Person { get; set; }
public DbSet<Document> Document { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Server=.\;Database=EFCoreDemo;Trusted_Connection=True;MultipleActiveResultSets=true");
}
}
Когда я хочу добавить миграцию, это выдает мне следующую ошибку:
Ключ не может быть настроен для «Персона», потому что онпроизводный тип.Ключ должен быть настроен для корневого типа «Пользователь».Если вы не предполагали, что «Пользователь» будет включен в модель, убедитесь, что он не включен в свойство DbSet вашего контекста, не указан в вызове конфигурации для ModelBuilder или не указан в свойстве навигации для включенного типа.в модели.
Я проверил эти изменения:
1) Если владелец приобрел тип Person, ошибка возникает, но это не вариант для меня, потому что на самом деле пользователь иДокумент находится в библиотеке, и мое последнее приложение использует эту библиотеку, а Person находится в приложении.
2) Если ApplicationDbContext наследует от DbContext, ошибка исчезает.
Есть ли доступный обходной путь?