我有一个名为的值类型FiscalYear
,它本质上是一个整数的包装器。我也NHibernate.UserTypes.IUserType
为它实现了。现在我可以将类型的属性FiscalYear
直接映射到 SQL 类型,NHibernate 会自动转换它们。
一切正常。但现在我想执行原生 SQL 查询以从数据库中获取财政年度列表。这是当前代码:
public IEnumerable<FiscalYear> FiscalYears
{
get
{
var result = new List<FiscalYear>();
foreach (var fiscalYear in Session.CreateSQLQuery(FiscalYearsQuery).List<Int16>())
{
result.Add(new FiscalYear(fiscalYear));
}
return result;
}
}
可行,但我的问题是:由于我已经实现了IUserType
for FiscalYear
,是否可以将此代码简化为如下所示:
public IEnumerable<FiscalYear> FiscalYears
{
get
{
return Session
.CreateSQLQuery(FiscalYearsQuery)
.List<FiscalYear>();
}
}
不幸的是,这不起作用。使用Transformers.AliasToBean
也无济于事,因为FiscalYear
它是一种值类型而不是实体。
我认为这确实应该很容易做到,但到目前为止我的所有尝试都失败了。我想我只是错过了什么?