So lösen Sie "Navigationseigenschaften können nur an einer einzelnen Beziehung teilnehmen." Fehler unter Fall?EF-Core 2.0 eins zu viele teilen die gleiche Tabelle
1 Unternehmen viele Milestone und MissionValueStory, wo Milestone und MissionValueStory teilen selben Tisch mit verschiedenen TypeId, und jeder von denen hat viele Übersetzung, wo verbinden mit companyInfoId nur
oder besser brechen die Beziehung zwischen Company und Unternehmen hat, und nur eine weitere Abfrage zum Abrufen von companyInfo ist sehr einfach?
public class Company
{
[key]
public long Id { get; set; }
public string Name { get; set; }
public virtual ICollection<CompanyInfo> Milestone { get; set; } //multi
public virtual ICollection<CompanyInfo> MissionValueStory { get; set; } //multi
}
public class CompanyInfo
{
[key]
public long Id { get; set; }
public long typeId { get; set; }
[Required]
public long CompanyId { get; set; }
public string Title { get; set; }
public string Text { get; set; }
[ForeignKey("CompanyId")]
public virtual Company Company { get; set; }
public ICollection<Translation> Translation { get; set; }
}
public class Translation
{
[key]
public long Id { get; set; }
public string Title { get; set; }
[Required]
public long CompanyInfoId { get; set; }
public string Language { get; set; }
[ForeignKey("CompanyInfoId")]
public virtual CompanyInfo CompanyInfo { get; set; }
}
modelBuilder.Entity<Company>()
.HasMany(e => e.Milestone)
.WithOne(t => t.Company)
.HasForeignKey(m => m.CompanyId).IsRequired()
.OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<Company>()
.HasMany(e => e.MissionValueStory)
.WithOne(t => t.Company)
.HasForeignKey(m => m.CompanyId).IsRequired()
.OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<CompanyInfo>()
.HasMany(e => e.Translation)
.WithOne(t => t.CompanyInfo).IsRequired();
Also im Grunde eine 'CompanyInfo' ist eigher ein' Milestone' oder ein 'MissionValueStory' aber es ist nie beides? – grek40