2011-07-29 4 views
0

Est-il possible de créer deux classes, qui seront référencées dans les deux sens et n'utiliseront qu'un seul FK? Cela m'intéresse dans One-to-One comme dans les cas One-to-Many.Mappage bidirectionnel

fe:

Class First: Entity 
{ 
Second second; 
} 

Class Second: Entity 
{ 
First first; 
} 

String TwoWayReference() 
{ 
First Fir = new First(); 
Second Sec = new Second(); 

Fir.second = Sec; // I need it is equivalent to: Sec.first = Fir; 

if (Sec.first == Fir) 
    return "Is any way how to do this code works and code return this string?"; 
else 
    return "Or it is impossible?" 
} 

Répondre

0

simple serait

class First : Entity 
{ 
    private Second second; 
    public virtual Second Second 
    { 
     get { return this.second; } 
     set { 
      if (value != null) 
      { 
       value.First = this; 
       this.second = value; 
      } 
     } 
    } 
} 

class Second : Entity 
{ 
    private First first; 
    public virtual First First 
    { 
     get { return this.first; } 
     set { 
      if (value != null && value.Second != this) 
      { 
       value.Second = this; 
       this.first = value; 
      } 
     } 
    } 
} 
+0

Le problème est que, parfois, la valeur est nulle (fe si je créer une nouvelle instance) NullReferenceException: objet de référence non définie à une instance d'un objet. –

+0

Et si je le teste si la valeur est nulle, il y a un problème de stackowerflow - il crée une seconde instance pour First et First Instance pour Second –

Questions connexes