Таким образом у меня есть файл сопоставления NHibernate со следующим свойством:NHibernate строковое свойство атрибута длины
<property name="FullName" column="FullName" type="string" not-null="true" />
Если установить длину = «50», например, NHibernate будет обрезать строку при вставке в базу данных. Если я удалю свойство length, эта база данных выдает исключение, как должно; говоря, что он не может вставить запись. Это нормальное поведение? Если да, то какова цель свойства length. Возможно, я неправильно настроил NHibernate или не оценил ситуацию. Любые мысли/идеи были бы замечательными.
Причины я поймал этот вопрос, потому что я писал модульный тест, чтобы проверить, что вставка потерпит неудачу, если длина строки FullName превышала 50 символов. Он не прерывался и усекал строку перед вставкой в базу данных. Как только я удалил атрибут length в файле сопоставления, он потерпел неудачу. – dolphy
NHibernate (как и любые другие ORM) использует параметризованные запросы. Когда вы задаете длину строки 50 для поля/свойства, она использует nvarchar (50) вместо nvarchar (4000). Это приводит к усечению строк вместо отказа. –
Спасибо, Дмитрий. – dolphy