Я пытаюсь сделать перекрестную ссылку на внешний ключ, но она не работает.
У меня есть два DbContexts, ApplicationDbContext
и BankDbContext
. ApplicationDbContext
имеет:
public class ApplicationDbContext : IdentityDbContext<IdentityUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
}
BankDbContext
имеет:
public class AccountDbContext: DbContext
{
public AccountDbContext(DbContextOptions<AccountDbContext> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
public DbSet<AccountModel> Accounts { get; set; }
}
А AccountModel
имеет:
public class AccountModel
{
[Key]
public string Id { get; set; } = Guid.NewGuid().ToString();
public string AccountName { get; set; }
public string AccountNumber { get; set; }
public string UserId { get; set; }
public virtual IdentityUser User { get; set; }
}
ApplicationDbContext
создает много таблиц ; один из них AspNetUsers
(он сохраняет данные пользователя). Когда я обновляю таблицу новыми миграциями, она создает все таблицы из таблиц ApplicationDbContext
и AccountModel
, но по некоторым причинам также создает таблицу IdentityUser
. Этого не должно быть, потому что ApplicationDbContext
уже создает его.
Я попытался добавить аннотацию атрибута ForeignKey["AspNetUsers"]
поверх public virtual IdentityUser User { get; set; }
, но он все еще создает эту таблицу.
приведенный выше код будет работать, когда я добавлю Accounts
DbSet к ApplicationDbContext
, например:
public class ApplicationDbContext : IdentityDbContext<IdentityUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
public DbSet<AccountModel> Accounts { get; set; }
}
В двух словах, я пытаюсь добавить ссылку из одного контекста в другой в той же базе данных, но это просто создает дубликаты таблиц с разными именами. Любая помощь в этом приветствуется.