NHIbernate: Как сопоставить сумку с ICompositeUserType - PullRequest
2 голосов
/ 21 января 2012

Предположим, у меня есть класс с коллекцией неизменяемых типов, который я хотел бы сопоставить с пользовательским 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 не распознает атрибут «type» для «составного элемента»

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

1 Ответ

2 голосов
/ 23 января 2012

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

<element type="Integration.UserTypes.BarCompositeUserType, Integration">
  <column name="BarBlah" />
  <column name="BarHalb" />
</element>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...