Product와 Image의 두 클래스가 있습니다.Fluent NHibernate의지도 작성
- 제품에는 이미지가 하나만 있습니다.
- 고아 이미지가 존재할 수 없습니다.
이 의미에서 UML 조성물 관계를 나타낸다 :
할당 Product.Image
- 오래된 화상을 삭제 다음에 newImage 결과;
- 새 이미지 삽입;
- 링크 새 이미지를 제품에 연결합니다.
는 지금은 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의 사용자 그룹이 구문을 제안했다.
그래. 아마 구성 요소가 필요하지만 별도의 테이블에 있어야합니다. 그래서 * join *을 * component *와 혼합해야 할 것입니다. FNH를 사용하여 어떻게 할 수 있는지 보지 마십시오. –