Я использую PostgreSql в качестве базы данных. Я пытаюсь добавить внешний ключ в таблицу пользователя, но вместо этого создается дублирующаяся таблица IdentityUser
.
Я унаследовал IdentityDbContext<IdentityUser>
для ApplicationDbContext
, код которого:
public class ApplicationDbContext : IdentityDbContext<IdentityUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
}
Это позволяет создать все таблицы следующим образом:
Я пытаюсь создать модель, в которой пользователь использует внешний ключ. выполнив:
public class AccountModel
{
[Key]
public string Id { get; set; } = Guid.NewGuid().ToString();
public string AccountName { get; set; }
public string AccountNumber { get; set; }
public BankModel BankDetails { get; set; }
public IdentityUser User { get; set; }
}
И это DBContext
public class AccountDbContext: DbContext
{
public AccountDbContext(DbContextOptions<AccountDbContext> options) : base(options)
{
}
public DbSet<AccountModel> Accounts { get; set; }
public DbSet<BankModel> Banks { get; set; }
}
Глядя на сообщение - { ссылка }, в принятом ответе используется ApplicationUser
, который я считаю аналогично IdentityUser
, когда я выполняю миграцию, вместо добавления FK к AspNetUsers
создается новая таблица с именем IdentityUser
, а затем FK добавляется в эту вновь созданную таблицу. Что выглядит как:
Я не уверен, что я делаю неправильно. Справка!
Обновление
Я пробовал этот код на сервере Azure SQL, и он все еще вызывал ту же проблему. Кроме того, я добавил [ForeignKey("AspNetUser")]
public class AccountModel
{
[Key]
public string Id { get; set; } = Guid.NewGuid().ToString();
public string AccountName { get; set; }
public string AccountNumber { get; set; }
public BankModel BankDetails { get; set; }
[ForeignKey("AspNetUsers")]
public IdentityUser User { get; set; }
}
Я все еще получаю ту же проблему.
Обновление 2
Связь между два разных контекста, то есть ApplicationDbContext
и AccountDbContext
. Добавление public DbSet<AccountModel> Accounts { get; set; }
к ApplicationDbContext
работает нормально и автоматически добавляет отношение FK.