2011-07-29 2 views
0

두 가지 클래스를 만드는 방법은 다릅니다. 두 가지 방법으로 참조되고 하나의 FK 만 사용됩니다. 이것은 일대 다 (One-to-Many) 사례와 마찬가지로 일대일 방식에 관심이 있습니다.양방향 매핑

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?" 
} 

답변

0

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

문제가 될 것이다는 NullReferenceException이 (나는 새로운 인스턴스를 생성하는 경우, FE) 때때로 값이 널 있다는 목적. –

+0

그리고 값이 널 (null)인지 테스트하면 stackowerflow 문제가 발생합니다. - 주기적으로 만듭니다. 초당 첫 번째 인스턴스와 두 번째 인스턴스를 두 번째로 만듭니다. –