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; }
Es gibt Fehler:EF Kern: geerbt Einheiten hat navs zu gleichen Tisch
The foreign keys {NavID} on 'ConcreteSecond' and {'NavID'} on 'ConcreteFirst' are both mapped to FK_Bases_Navigations_NavID' but with different uniqueness
Ich denke, es behoben werden kann entweder ConcreteFirst.Nav oder ConcreteSecond.Nav Eigenschaft umbenennen, aber es wird von der Ursache Erhöhung der Spalten in Bases-Tabelle. Wie kann ich dieses Problem mit dem Nav-Namen für ConcreteFirst und ConcreteSecond beheben?
Nur ein Kopf hoch gibt es einige Tippfehler in dem, was Sie gepostet haben, denke ich. ConcreteFirst-Mitglied NavID hat keine Zeichenfolge. builder.Entity() .WithMany (n => n.ConcreteFIRSTS) –
pijemcolu
@pijemcolu behoben, danke – Mergasov
war es der Tippfehler in builder.entity? Soll ich einen Asnwer posten oder willst du diesen schließen? – pijemcolu