如何使用NHibernate和Fluent NHibernate存储非截断的varchar(max)字符串

Nic*_*hac 18 .net nhibernate fluent-nhibernate

我的数据库架构有一个字符串作为varchar(max).我已经阅读了有关将Length设置为4000或8000以上的其他问题,以便它在映射中真正生成(n)varchar(max)但是当我在映射类中使用Length(10000)时,hbm文件实际上显示了长度="10000"如果我保存一个超过10000个字符的实体,它实际上被截断为10000个字符.

我不想要任何截断.

(使用NH3-alpha2和FNH主干)

Dan*_*anP 21

看起来这是一个老问题,现在在NHibernate 3.x版本中重新铺设; 你可以在这里阅读有关变通方法的内容.

注意:我已经更新了我过时发布的原始链接.

  • 调用CustomType("StringClob")就可以了.谢谢. (4认同)

Die*_*hon 17

此映射应该有效:

<property name="TheProperty" type="StringClob">
  <column name="TheColumn" sql-type="nvarchar(max)" />
</property>
Run Code Online (Sandbox Code Playgroud)

只需寻找流利的等价物.

  • 你认为在NHib 3中这将得到适当的对待吗?有点难过看到sql server特定的细节在这样的映射中泄漏... (2认同)
  • 流利的等价物是`.CustomType("StringClob").CustomSqlType("nvarchar(max)")` (2认同)