我的数量列是一个整数。我想在它上面使用 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.String
来代替NHibernateUtil.AnsiString
Expression.Like(
// Projections.Cast( NHibernateUtil.String,
Projections.Cast( NHibernateUtil.AnsiString,
Projections.Property<ErrorSummaryEntity>(x => x.Quantity)),
searchValue, MatchMode.Anywhere)
参见:5.2.2。基本值类型