Не удается добавить новую запись в сопоставлении NHibernate many с одним

#nhibernate #many-to-one

#nhibernate #многие к одному

Вопрос:

 String or binary data would be truncated.
The statement has been terminated.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.SqlClient.SqlException: String or binary data would be truncated.
The statement has been terminated.

Source Error: 
Line 33:             ITransaction tx = session.BeginTransaction();
Line 34:             session.SaveOrUpdate(productX);
Line 35:             tx.Commit();
Line 36:         }
Line 37: 

Source File: ProductService.cs    Line: 35 

Stack Trace: 
[SqlException (0x80131904): String or binary data would be truncated.
The statement has been terminated.]

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Aquamate.DataObjects.Core" assembly="Aquamate.DataObjects.Core">
    <class name="Product" table="revProduct">
        <id name="Pid" >
            <generator class="guid.comb" />
        </id>
        <many-to-one name="ProductCategory" class="Category" lazy="proxy">
            <column name="Catid" not-null="true" />
        </many-to-one>
        <property name="NameEng" not-null="true" />
        <property name="NameTch" not-null="true" />
        <property name="Status" not-null="true" />
        <property name="Sort" not-null="true" />
    </class>
</hibernate-mapping>
  

Ответ №1:

Обычно эта ошибка означает, что вы пытаетесь вставить значение в столбец базы данных, где размер данных больше, чем определено для столбца.

Проверьте размер, определенный в базе данных для всех сопоставленных свойств, и сравните его с данными, которые вы пытаетесь вставить.

Профилировщик NHibernate может быть вашим лучшим другом здесь