db字符串长度错误和NHibernate

时间:2009-07-24 00:22:44

标签: sql-server nhibernate

在SQL server db中,我在Departments表中有一个Name列,nvchar(25)不为null,唯一。我测试看看如果我尝试保存一个名称大于该值的部门会发生什么,并得到一个“NHibernate.Exceptions.GenericADOException”,明确表示“”字符串或二进制数据将被截断“。到目前为止,所以好。

在另一个表中,我在Projects表中有一个Description列,其中nvchar(50)不为null,但没有唯一约束。我通过完全相同的测试(当然确保描述大于50),但没有抛出任何异常......

我更喜欢非常明确的例外,但我会满足于理解规则是什么。另外,NHib例外的具体程度往往是跨越不同的数据库。我错过了什么?

干杯,
Berryl

ANSWER

我的错!我使用的是使用SqlLite而不是SqlServer的测试夹具。这是我首先停止使用SqlLite的原因之一(必须有这么多聪明人似乎喜欢它的原因,但它对验证nhibernate映射IMO没用。)

谢谢!

2 个答案:

答案 0 :(得分:2)

行为由ANSI WARNINGS选项控制:

  

如果在a上尝试INSERT或UPDATE   字符,Unicode或二进制列   其中新值的长度   超过列的最大大小

该选项是每个数据库选项。

答案 1 :(得分:0)

这些错误是由MS SQL Server发出的,而不是由nHibernate发出的。您应该尝试使用SQL Server Management Studio直接运行一些查询来确定发生了什么。