2012-01-03 3 views
0

여기가 내 문제입니다.Sharp Lite 아키텍처를 사용하는 Fluent NHibernate의 동일한 테이블에 대해 두 개의 외래 키를 사용하는 명명 규칙

고객 테이블과 주소 테이블이 있습니다. 고객 테이블에는 주소 테이블에 대한 두 개의 외부 키가 있습니다. ShippingAddressFK 및 BillingAddressFK

일반적으로 하나의 외래 키인 경우 일반적으로 AddressFK 만 갖습니다. 하지만 두 가지 때문에 나는 그것에 대해 어떻게 가야할지 모르겠습니다.

나는이 보았다 Fluent Nhibernate AutoMapping -- 2 foreign keys to same table?

을하지만 샤프 라이트 아키텍처 재정의 .cs 파일에 그 번역하는 방법을 모르겠어요.

public class OrderOverride : IOverride 
    { 
     public void Override(ModelMapper mapper) { 
      mapper.Class<Order>(map => map.Property(x => x.OrderStatus, 
       status => { 
        status.Type<OrderStatusCustomType>(); 
        status.Column("OrderStatusTypeFk"); 
       })); 
     } 
    } 

나는 그들이 난 그냥 샤프 재정의 클래스의 종류에 맞게 위의 솔루션을 변경하는 방법을 잘 모르겠어요 비슷주의 사항 : 이것을의 mystore 예에서

내가 찾을 수있는 가장 가까운이었다 라이트 아키텍처

답변

0

그래서, 당신은 연결 붙여 넣은 코드와 다른 문제의 코드를 기반으로 사이비 코드를 고려 이것을 시도하지 않은 비주얼 스튜디오에 액세스 할 수 없음 :

public class CustomerOverride : IOverride 
{ 
    public void Override(ModelMapper mapper) { 
     mapper.Class<Customer>(map => map.Property(x => x.BillingAddress, 
      address => { 
       address.Type<Address>(); 
       address.Column("BillingAddressFk"); 
      })); 
     mapper.Class<Customer>(map => map.Property(x => x.ShippingAddress, 
      address => { 
       address.Type<Address>(); 
       address.Column("ShippingAddressFk"); 
      })); 
    } 
} 

나는 방금 Order override in SharpLite을 보았다. 그리고 이것은 유창한 nhibernate가 아니다. 그것은 결코 사용하지 않은 nhibernate 코드 매핑이다. 이는 여러 속성 재정의를 정의하는 올바른 방법이 아니지만 위의 코드가 제대로 작동 할 수 있기를 바랍니다. fluentnhibernate 태그를 nhibernate로 변경하지 않으면 더 많은 것을 알고있는 사람이 도움을 줄 수 있습니다.

+0

그건 내 첫 번째 본능이었습니다. 그러나 그것이 어떻게 이루어 졌는지는 아닙니다. 그런 식으로하면 다음과 같은 예외가 발생합니다. "IUserType, ICompositeUserType 또는 IType을 구현하는 예상 유형 매개 변수 이름 : persistentType" 이렇게 나는 완전히 다른 것일 수 있습니다. – Bill

0

참조하는 예제는 속성 중 하나를 열거 형과 같은 사용자 지정 형식으로 매핑하는 것입니다.

관계을 여러 주소에 매핑하고 규칙과 다른 열 이름을 지정해야합니다.

public void Override(ModelMapper mapper) 
{ 
    mapper.Class<Customer>(map => 
          map.ManyToOne(
           x => x.BillingAddress, 
           x => x.Column("BillingAddressFk"))); 

    mapper.Class<Customer>(map => 
          map.ManyToOne(
           x => x.ShippingAddress, 
           x => x.Column("ShippingAddressFk"))); 
} 

주의 대신 PropertyManyToOne.

관련 문제