2016-04-26 14 views
2

Ich habe begrenzte Kenntnisse über Entity Framework und läuft auf einige Probleme mit meiner Objektbeziehung. Ich habe folgende Einheiten:C# EF Navigationseigenschaften auf Primärschlüssel

public class Reseller 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public ResellerLevel? ResellerLevel { get; set; } 
    public ResellerLevel? HosterLevel { get; set; } 

    public ResellerMail Mail { get; set; } 
    public virtual ObservableCollection<ResellerMail> Mails { get; set; } 

    public Reseller() 
    { 
    Mails = new ObservableCollection<ResellerMail>(); 
    } 
} 

public class ResellerMail 
{ 
    [Key, ForeignKey("Reseller")] 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Mail { get; set; } 
    public string Display 
    { 
    get 
    { 
     return String.Format("{0} <{1}>", Name, Mail); 
    } 
    } 

    public virtual Reseller Reseller { get; set; } 
} 

Ich versuche, die folgenden zwei Beziehungen zu erreichen:

  • One-to-Many zwischen Reseller und Mail: Im Grunde eine Liste von E-Mail an den verknüpften Wiederverkäufer.

  • Eins-zu-Eins-Beziehung Die ausgewählte Mail des Resellers aus einer Dropdown-Liste. Es könnte nur die ID der Mail sein, aber ich möchte eine Navigationseigenschaft anhängen.

Wie würde ich über so etwas gehen?

+0

Alle Ihre Datenbeziehungen funktionieren gut mit den oben genannten einrichten? – Sampath

Antwort

0

Zunächst einmal nicht ObservableCollection in Ihren Modellen verwenden, da dieser Typ verwendet wird, um mit der Benutzeroberfläche zu interagieren (was Sie nicht direkt von Ihren Modellen aus tun sollten).

Was die beiden Fragen:

Für 1: Nur eine virtuelle Sammlung für die ResellerEmail gesetzt. Das bedeutet, dass Ihr Modell wie folgt aussieht:

Für no2. Sie könnten ein Objekt vom Typ Reseller unterhalb der ForeignKey haben. Sie können versuchen, etwas wie:

[Key, ForeignKey("Reseller")] 
    public int Id { get; set; } 
    public Reseller Reseller { get; set; } 
Verwandte Themen