Я следую учебникам Summer of NHibernate, но я не использую сопоставления xml, но вместо этого я использую Fluent NHibernate для выполнения сопоставлений.
Мой класс сущности «Мой клиент»:
public class Customer
{
public virtual int CustomerId { get; set; }
public virtual string Firstname { get; set; }
public virtual string Lastname { get; set; }
}
Соответствующий класс сопоставления:
public class CustomerMap: ClassMap<Customer>
{
public CustomerMap()
{
Id(x =>x.CustomerId);
Map(x => x.Firstname).Length(50).Nullable();
Map(x => x.Lastname).Length(50).Nullable();
ImportType<CustomerFirstnameCounter>();
}
}
Мой класс DAO:
public int AddCustomer( Customer customer )
{
using( ISession session = GetSession() )
{
using( ITransaction tx = session.BeginTransaction() )
{
try
{
int newId = ( int ) session.Save( customer );
session.Flush();
tx.Commit();
return newId;
}
catch( GenericADOException )
{
tx.Rollback();
throw;
}
}
}
}
И наконец, мой тест:
[Test]
public void AddCustomerThrowsExceptionOnFail()
{
// Arrange
Customer customer = BuildInvalidCustomer();
// Act
_provider.AddCustomer( customer );
// Assert
}
Когда тест выполняется, исключение не выдается!Итак, мой первый вопрос: может ли кто-нибудь увидеть, что не так с моим отображением.
Теперь в дБ поле «Имя» устанавливается как varchar (50).Когда я отлаживаю тест, я вижу, что данные вставлены, но усечены (я получаю предупреждающие сообщения).Так что это может указывать
, что я не настроил дБ должным образом.Может ли кто-нибудь указать мне, где предотвратить это усечение данных в SQL Server?