NHibernate投影.强制转换为自定义类型
本文关键字:自定义 类型 转换 投影 NHibernate | 更新日期: 2023-09-27 18:14:16
我的数量列是一个int。我想在它上使用Like,然后我尝试将它的类型转换为字符串。
要做到这一点,我使用:
Expression.Like(
Projections.Cast( NHibernateUtil.String,
Projections.Property<ErrorSummaryEntity>(x => x.Quantity)),
searchValue, MatchMode.Anywhere)
它几乎奏效了。它生成这样的sql。
cast( this_.ILOSC as NVARCHAR2(255)) like :p1
这里的问题是NVARCHAR。我需要找VARCHAR。
我怎么能拿到这个?cast( this_.ILOSC as VARCHAR2(255)) like :p1
第二个可能有帮助的问题是:如果我有这样的映射:
Map(x => x.Quantity)
.Column("ILOSC")
这就是为什么我使用lambda来处理这个列。是否可以检索映射的列名?
var colName = //some action to return "ILOSC"
Projections.Property<ErrorSummaryEntity>(x => x.Quantity)
给了我"数量"。如何获取"ILOSC"?
如果我得到这个列名,我可以使用Expression.Sql().
您就快到了,只是我们必须使用:NHibernateUtil.AnsiString
而不是NHibernateUtil.String
Expression.Like(
// Projections.Cast( NHibernateUtil.String,
Projections.Cast( NHibernateUtil.AnsiString,
Projections.Property<ErrorSummaryEntity>(x => x.Quantity)),
searchValue, MatchMode.Anywhere)
参见:5.2.2。基本值类型