Ich hoffe, Sie können mir mit einem kleinen Problem helfen, das ich habe.Semirekursive Assoziationen mit Entity Framework Code Zuerst
Ich habe ein Entity Framework-Code Erstes Setup, wo ich die folgende Konfiguration haben:
public class UserDetails{
public int Id {get;set;}
//... some other properties .. //
//This represents the approval group the user is a member of.
public virtual ApprovalGroup {get;set;}
//This represents the approval groups that the user is resposible for approving
public virual ICollection<ApprovalGroup> ApprovalGroups {get;set;}
}
public class ApprovalGroup
{
public int Id {get;set;}
public string Name {get;set;}
public virtual UserDetails Approvee {get;set;}
public virtual ICollection<UserDetails> Members {get;set;}
}
In meinem db Zusammenhang habe ich die folgenden:
modelBuilder.Entity<ApprovalGroup>().ToTable("ApprovalGroup")
.HasKey(t=>t.Id)
.HasRequired(t=>t.Approver);
modelBuilder.Entity<ApprovalGroup>().HasMany(t=>t.Members)
.WithOptional().WillCascadeOnDelete(false);
So eine Genehmigungsgruppe eine approvee haben muss Setup, könnte aber potenziell keine Mitglieder haben (besonders bei der ersten Konfiguration).
Dieser Code wird ausgeführt. Wenn ich jedoch die Datenbank überprüfe, die die Genehmigungsgruppentabelle erstellt, enthält sie eine zusätzliche Spalte namens "UserDetails_Id". Es ist als Fremdschlüssel eingerichtet, aber es ist immer Null.
Das Schema der Tabelle erstellt hat es die folgenden Spalten:
Id, Name, UserDetails_Id, Approver_Id
Ich habe keine Ahnung, warum es die unnötige Tabelle „UserDetails_Id“ zu schaffen, und ich möchte es nicht, da es keinen Grund gibt, dafür. Ich vermute, dass etwas mit meinem Konfigurations-/Mapping-Verhalten nicht stimmt, aber ich kann nicht herausfinden, was es ist.
Bis jetzt hat Google versäumt, Licht auf das, was ich falsch mache, also wenn jemand hier helfen kann, würde es sehr geschätzt werden.
Nik
Hallo Ivan, danke. Ich gebe das hier her und lasse Sie wissen, wie es mir geht. Dies ist mein erster richtiger tiefer Eintauch in den Code zuerst, normalerweise arbeite ich zuerst DB und mit der EDMX Akte, also ist das ein bisschen eine Verschiebung im Verstehen. Ich denke, es ist mein Verständnis davon, wie die Beziehungen zum Ausdruck gebracht werden müssen, was für mich alles ein bisschen zurück nach vorne gebracht hat. Danke noch einmal :-) – Pheonyx