2009-08-06 2 views
0

Product와 Image의 두 클래스가 있습니다.Fluent NHibernate의지도 작성

  1. 제품에는 이미지가 하나만 있습니다.
  2. 고아 이미지가 존재할 수 없습니다.

이 의미에서 UML 조성물 관계를 나타낸다 :
할당 Product.Image

  1. 오래된 화상을 삭제 다음에 newImage 결과;
  2. 새 이미지 삽입;
  3. 링크 새 이미지를 제품에 연결합니다.

는 지금은 RDBMS 테이블 (메타 코드)에 매핑해야합니다

Product (Id primary key, ImageId int references Image(id)) 
Image(Id primary key, Content) 

문제는 유창함 자 NHibernate를 사용하여 작업을 수행하는 방법이다.
는 참고 사항 :

productMap.References(x => x.Image).Cascade.All() 

는 적용되지 않습니다 - 그것은 고아 이미지를 삭제하지 않습니다.

또한 NH는 다 대일, 일대일로 전체 삭제를 지원하지 않습니다.

아마도 구성 요소와 결합 할 필요가 있습니다.
하지만 FLUENT NH에 있습니다.

업데이트 :

WithTable("other table", m => 
{ 
    m.Component(...); 
}); 

그러나 그것으로 운 : NotSupportedException이 :
폐기 그것은 FNH의 V1 (upcomming)에서 작동하도록되어 제임스는 FNH의 사용자 그룹이 구문을 제안했다.

답변

1
+0

그래. 아마 구성 요소가 필요하지만 별도의 테이블에 있어야합니다. 그래서 * join *을 * component *와 혼합해야 할 것입니다. FNH를 사용하여 어떻게 할 수 있는지 보지 마십시오. –