2009-08-06 2 views
0

Есть 2 класса: продукт и изображение.Карта Композиция в Fluent NHibernate

  1. В продукте имеется только одно изображение.
  2. No orphan Изображения могут существовать.

Это представляет композицию отношений в UML, что означает:
Assigning Product.Image а newImage результаты в следующем

  1. удалить старое изображение;
  2. Вставить новое изображение;
  3. ссылка новое изображение к товару.

Теперь мне нужно сопоставить его с таблицами СУБД (мета-код):

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

Вопрос заключается в том, чтобы сделать это с помощью Fluent NHibernate.
ОБРАТИТЕ ВНИМАНИЕ:

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

не применяется - он не удаляет сироту изображение.

Также NH НЕ ПОДДЕРЖИВАЕТ ВСЕ-исключающую сироту для многих-к-одному, один к одному.

Возможно, мне нужно что-то вроде соединения с компонентом ...
BUT IN FLUENT NH.

UPDATE: Джеймс в FNH групп пользователей предлагается следующий синтаксис:

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

но не повезло с ней: NotSupportedException: Устаревшее
Он должен работать в v1() из Предстоящие FNH.

ответ

1

Вы можете перечислить как компонент?

Mapping с Fluent: http://wiki.fluentnhibernate.org/show/StandardMappingComponents

NH док: http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-component

+0

Да. Мне, вероятно, нужен компонент, но он должен быть в отдельной таблице. Так что мне, вероятно, нужно смешать * join * с * компонентом *. Не вижу, как я могу это сделать, используя FNH. –

Смежные вопросы