我有一个char(4)类型的Code in Person表列。
人员表是:
人Hbm是:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Domain" namespace="Domain.Model">
<class name="Person" table="Person">
<property name="Code" >
<column name="Code" **sql-type="char(4)"**/>
</property>
...
</class>
</hibernate-mapping>
现在我有一个linq到nhibernate查询:
SessionInstance.Query<Person>()
.Where(x => x.Code == "1234")
.Select(x => x.Code)
.ToList();
但不期望sql profiler中的查询跟踪。
exec sp_executesql N'select person_.Code as col_0_0_ from Person person_ where person_.Code=@p0',N'@p0 nvarchar(4000)',@p0=N'1234'
因为@p0
的类型不是char(4)
而@p0
的值是N'1234'
而不是'1234'
原因是什么?
答案 0 :(得分:0)
你应该完全没有明确的类型声明。通常,您需要定义数据类型的唯一场景是NHibernate不默认为您打算使用的数据类型(与日期/时间数据类型的某些变体相同)。
答案 1 :(得分:0)
这是NHibernate 4.0中的一个已知限制: https://nhibernate.jira.com/browse/NH-3403