2012-01-20 3 views
2

Предположим, у меня есть класс с коллекцией неизменных типов, которые я хотел бы карту с индивидуальным ICompositeUserTypeNHibernate: Как отобразить сумку с ICompositeUserType

public class Foo 
{ 
    public long Id { get; protected set; } 

    public virtual IList<Bar> Bars { get; set; } 
} 

//immutable 
public class Bar 
{ 
    private _blah; 
    private _halb; 

    public Bar(string blah, string halb) 
    { 
     _blah = blah; _halb = halb; 
    } 

    public Blah { get { return _blah; } } 
    public Halb { get { return _halb; } } 
} 

Как настроить отображение мешок на Foo, чтобы использовать составной тип пользователя, чтобы пользовательский тип мог при необходимости вызвать конструктор?

Я пробовал это, но тип не доступен на составном элементе.

<bag name="Bars" table="FooBars" lazy="true"> 
    <key column="FooId" foreign-key="FK_Bars_FooId" /> 
    <composite-element class="Doman.Bar, Domain" type="Integration.UserTypes.BarCompositeUserType, Integration"> 
     <property name="Blah"> 
      <column name ="BarBlah" sql-type="char(2)"/> 
     </property> 
    </composite-element> 
</bag> 

Однако, это не будет работать, потому что NHibernate не распознает «типа» атрибут «Композит-элемент»

Как я карту сумку с ICompositeUserType? (Я использую NHibernate 3.2)

ответ

2

элемент вместо составного элемента-потому, что свойства и преобразование задается внутри ICompositeUserType

<element type="Integration.UserTypes.BarCompositeUserType, Integration"> 
    <column name="BarBlah" /> 
    <column name="BarHalb" /> 
</element> 
Смежные вопросы