我在SQL Server 2005数据库中有一个nvarchar(2000)列,并将其映射到NHibernate中:
<property name="Query" column="`Query`" type="String" length="2000" not-null="false"/>
DTO类只显示一个字符串属性:
public virtual string Query { get; set; }
如果我将查询设置为&gt;字符串2000个字符我从SQL服务器获得异常:
“字符串或二进制数据将是 截断。声明一直如此 终止“。
我想要的是这个截断只是自动而无声地发生。我可以覆盖虚拟属性并强制对属性集进行截断,但是我觉得应该有一种方法可以通过NHibernate映射甚至作为SQL服务器设置来获取此行为。
我错过了什么......我不想更改数据库架构以允许更长的字符串。
答案 0 :(得分:4)
创建自定义用户类型,如果字符串超过2000个字符,则会截断该字符串。以下是creating User Type
的示例<property name="Query" type="Common.Nhibernate.Types.StringTruncType, Common" column="`Query`" type="String" length="2000" not-null="false"/>