У меня есть следующие классы, все в порядке. Но в таблицы, генерируемой в базе данных я нашел в AB
таблице:Entity Framework генерирует дополнительные внешние ключи в базе данных
Id, AId, BId
Как это должно быть и две дополнительные колонки, которые не должны быть там AId1 & AId2, что они также являются внешними ключами.
Класс A
public class A
{
public int Id { get; set; }
ICollection<AB> ABs { get; set; }
}
Класс B
public class B
{
public int Id { get; set; }
ICollection<AB> ABs { get; set; }
}
Класс АВ
public class AB
{
public int Id { get; set; }
public A A { get; set; }
public B B { get; set; }
public int AId { get; set; }
public int BId { get; set; }
}
ABMapping
public class ABMap : EntityTypeConfiguration<AB>
{
public ABMap()
{
this.HasKey(a => a.Id);
this.HasRequired(e => e.A)
.WithMany()
.HasForeignKey(e => e.AId)
.WillCascadeOnDelete(false);
this.HasRequired(c => c.B)
.WithMany()
.HasForeignKey(e => e.BId)
.WillCascadeOnDelete(false);
this.Property(e => e.AId)
.HasColumnAnnotation("Index", new IndexAnnotation(new IndexAttribute("IX_AB", 1) { IsUnique = true }));
this.Property(e => e.BId)
.HasColumnAnnotation("Index", new IndexAnnotation(new IndexAttribute("IX_AB", 2) { IsUnique = true }));
}
}
Контекст
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//...
modelBuilder.Configurations.Add(new ABMap());
//...
}