在NHibernate / SQL Server中自动截断字符串

时间:2009-05-06 19:57:43

标签: nhibernate

我在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服务器设置来获取此行为。

我错过了什么......我不想更改数据库架构以允许更长的字符串。

1 个答案:

答案 0 :(得分:4)

创建自定义用户类型,如果字符串超过2000个字符,则会截断该字符串。以下是creating User Type

的示例
<property name="Query" type="Common.Nhibernate.Types.StringTruncType, Common" column="`Query`" type="String" length="2000" not-null="false"/>