我有一个映射到视图的类,并且正在搜索名字和姓氏以搜索患者记录。该视图最终查看患者表上的名字和姓氏字段(也可能是其他字段,具体取决于输入)。当条件转换为 SQL 时,它会将我的字符串作为 nvarchar 参数输入。我已经在映射中使用了 type="AnsiString" 和 length="50",但它仍然将它们转换为 nvarchar,这对我的查询造成性能影响。
<class name="PatientSearchResult" table="vw_PatientSearch" mutable="false" >
<id name="Id" type="Guid" column="PatientId"/>
<property name="MedicalRecordNumber" type="AnsiString" length="50" />
<property name="Title" />
<property name="FirstName" type="AnsiString" length="50" />
<property name="MiddleName" />
<property name="LastName" type="AnsiString" length="50" />
<property name="Nickname" />
<property name="Suffix" />
<property name="DateOfBirth" />
<property name="IsRestricted" />
<property name="IsDeleted" />
<component name="Address">
<property name="StreetAddress1" />
<property name="StreetAddress2" />
<property name="City" />
<property name="State" />
<property name="PostalCode" />
</component>
</class>
SQL Profiler 将输出 SQL 显示为使用 nvarchar 参数,并在所有字符串前添加 N 前缀以进行转换。
我错过了什么吗?在标准或映射方面还需要做些什么吗?另外,参数的长度也不是常数50。我正在使用 NHibernate 2.1。
尝试在映射中使用 sql-type 属性:
<property name="FirstName" length="50" />
<column sql-type="varchar(50)" />
</property>
您遇到什么性能问题?在我看来,将字符串视为 unicode 不太可能对性能产生太大影响。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)