public abstract class Base {
public Guid Id { get;set; }
public Navigation Nav { get;set; }
public string NavID { get;set; }
}
public class ConcreteFirst: Base { }
public class ConcreteSecond: Base { }
public class Navigation Nav {
public string NavID { get; set; }
public ICollection<ConcreteFirst> ConcreteFirsts { get;set; }
public ICollection<ConcreteSecond> ConcreteSeconds { get;set; }
}
//OnModelCreating
builder.Entity<Base>().Ignore(b => b.Nav);
builder.Entity<ConcreteFirst>()
.HasOne(c => c.Nav)
.WithMany(n => n.ConcreteFirsts)
.HasForeignKey(c => c.NavID);
builder.Entity<ConcreteSecond>()
.HasOne(c => c.Nav)
.WithMany(n => n.ConcreteSeconds)
.HasForeignKey(c => c.NavID);
//...
DbSet<Base> Bases { get; set;}
DbSet<ConcreteFirst> Firsts { get; set;}
DbSet<ConcreteSecond> Seconds { get; set;}
DbSet<Navigation> Navigations { get; set; }
を持ってエラーがあります:EFコア:継承されたエンティティが同じテーブルにたNAV
The foreign keys {NavID} on 'ConcreteSecond' and {'NavID'} on 'ConcreteFirst' are both mapped to FK_Bases_Navigations_NavID' but with different uniqueness
私はそれがConcreteFirst.NavまたはConcreteSecond.Navいずれかのプロパティの名前を変更するのに固定することができますが、それが原因だろうと思いますBasesテーブルの列の増加。 ConcreteFirstとConcreteSecondの両方のNav名でこの問題を解決するにはどうすればよいですか?
あなたが投稿したものにいくつかのタイプミスがあります。 ConcreteFirstメンバーNavIDにはタイプ文字列がありません。ビルダー。エンティティー()。WithMany(n => n.ConcreteFIRSTS) –
pijemcolu
@pijemcoluを修正しました。 – Mergasov
ビルダーのタイプミスですか?私はasnwerを投稿するか、これを閉じたいですか? – pijemcolu