Попытка использовать nhibernate на sql-server compact edition для модульного тестирования и возникли некоторые проблемы. На данный момент у меня есть только одна сущность:
<class name="Audit" table="eolaudit_llk">
<id name="ID" column="eolauditlk_ky">
<generator class="identity"></generator>
</id>
<property name="Name" column="eolauditlk_nm" />
<property name="Description" column="eolauditlk_dn" />
<property name="Active" column="active_fg" type="YesNo" />
<property name="UpdateUser" column="update_user_id" />
<property name="UpdateDateTime" column="update_dm"/>
Я довольно новичок в nhibernate. Я использую следующий код для построения сеанса:
public static ISessionFactory CrashAndBurnCompactSQLSessionFactory(string ConnectionString)
{
return Fluently.Configure()
.Database(MsSqlCeConfiguration.Standard
.ConnectionString(ConnectionString)
.ShowSql()
.UseOuterJoin()
.QuerySubstitutions("true 1, false 0, yes 'Y', no 'N'")
.Dialect("NHibernate.Dialect.MsSqlCeDialect")
)
.Mappings(m =>
{
m.HbmMappings
.AddFromAssemblyOf<Audit>();
})
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
}
Он отлично работает с SQL-сервером, но когда я использую сеанс SQL-Server CE сверху, я получаю следующую ошибку:
failed: System.ArgumentException: No mapping exists from DbType AnsiStringFixedLength to a known SqlDbType. at System.Data.SqlServerCe.SqlCeType.FromDbType(DbType type)
at System.Data.SqlServerCe.SqlCeParameter.set_DbType(DbType value)
Это хладнокровие - я не хочу проводить тестирование на sql-сервере и не могу изменить базу данных. Это определенно связано с обработкой того типа YesNo, который отображается из поля «Y» или «N» char (1) в булево значение объекта.
Как я уже сказал, в SQL-Server все работает отлично.