試圖在sql-server compact版上使用nhibernate進行單元測試並遇到一些麻煩。目前,我只是有一個實體,那就是:NHibernate是否SQL-Server CE上沒有從DbType存在映射AnsiStringFixedLength
<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-Server中,但是當我使用的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-server上做我的測試,並且不能更改數據庫。與definitley相關的是,處理從Yes或'N'char(1)db字段映射到對象中布爾值的YesNo類型。
正如我所說的,SQL Server中的工作正常。
您是否查看過SQL CE數據庫中的映射以查看正在創建的內容?你有沒有讓流利NH爲你創建真實的映射文件,所以你可以看到映射的樣子? – 2010-06-30 14:01:44