是否可以拥有通过IUserType映射的实体集合?例如:
class Foo
{
public int Id { get; set; }
public ISet<Special> Items { get; set; }
}
class Special
{
public Special(string columnValue)
{
_val = columnValue;
}
public override string ToString()
{
return _val.TranformInInterestingWays();
}
private string _val;
}
class SpecialUserTypeForMapping : IUserType
{
// assume that all the right stuff is here
// for using the non-default constructor on the way in
// and calling ToString() on the way out
}
如果我正确阅读文档,<set
&gt;,<one-to-many
&gt;,<many-to-many
&gt;,<class
&gt; element支持“type”属性,用于将IUserType映射应用于<property
&gt; s。那我该怎么做呢?
答案 0 :(得分:2)
最方便的解决方案似乎是使用<element
&gt;元素,如:
<class name="Foo" table="foos">
<id name="Id" />
<set name="Items" table="foo_special">
<key column="fooId" />
<element column="special_value" type="SpecialUserTypeForMapping" />
</set>
</class>
从数据库中检索不同的Foo实例没有问题,但是不清楚是否可以针对special_value列编写查询,这是我的方案中的一项要求。 This question似乎表明它不是。