我有nhibernate使用oracle數據庫,我試圖在內存數據庫中使用sqlite來測試我們的查詢邏輯。我相信我已閱讀,理解並確認網絡上有關此問題的每個答案,其中一些是幾次:)SqLite在內存數據庫和NHibernate
我得到的SQLite錯誤沒有這樣的表: 我也沒有看到任何ddl命令在SchemaExport調用
下面是我覺得是相關的我的設置的位。 此代碼是全部來自相同的方法
cfg = new Configuration()
.SetProperty(Environment.ReleaseConnections, "on_close")
.SetProperty(Environment.Dialect, typeof(SQLiteDialect).AssemblyQualifiedName)
.SetProperty(Environment.ConnectionDriver, typeof(SQLite20Driver).AssemblyQualifiedName)
.SetProperty(Environment.ConnectionString, "Data Source=:memory:;Version=3;New=True")
.SetProperty(Environment.ProxyFactoryFactoryClass, typeof(ProxyFactoryFactory).AssemblyQualifiedName)
.SetProperty(Environment.ShowSql, "true")
.SetProperty(Environment.ConnectionProvider, typeof(NHibernate.Connection.DriverConnectionProvider).AssemblyQualifiedName);
cfg.AddAssembly("MyAssembly");
_sessionFactory = cfg.BuildSessionFactory();
_session = _sessionFactory.OpenSession();
new SchemaExport(cfg).Execute(true, true, false, _session.Connection, Console.Out); <--don't see any ddl commands here
var q = from c in _session.Query<ComponentGroup>()
where !c.IsDiscontinued
select c;
var z = q.ToList(); //<--get error here
我的.hbm.xml:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping assembly="myassmebly" namespace="myns" xmlns="urn:nhibernate-mapping-2.2">
<class name="ComponentGroup" table="TBL_COMPONENT_GROUP" lazy="true" >
<id name="Id" column="N_COMPONENT_GROUP_ID" type="int">
<generator class="native" />
</id>
<property name="AssemblyFacilityId" column="N_ASSEMBLY_FACILITY_ID" type="int" not-null="true" />
<property name="Name" column="C_COMPONENT_GROUP_NAME" type="string" not-null="true" />
<property name="IsDiscontinued" column="N_DISCONTINUED_FLAG" type="bool" not-null="true" />
</class>
</hibernate-mapping>
我的POCO
public class ComponentGroup
{
public virtual int Id { get; set; }
public virtual int AssemblyFacilityId { get; set; }
public virtual string Name { get; set; }
public virtual bool IsDiscontinued { get; set; }
}
設置InnerException
InnerException: System.Data.SQLite.SQLiteException
Message=SQLite error
no such table: TBL_COMPONENT_GROUP
Source=System.Data.SQLite
ErrorCode=-2147467259
StackTrace:
at System.Data.SQLite.SQLite3.Prepare(SQLiteConnection cnn, String strSql, SQLiteStatement previous, UInt32 timeoutMS, String& strRemain)
at System.Data.SQLite.SQLiteCommand.BuildNextCommand()
at System.Data.SQLite.SQLiteCommand.GetStatement(Int32 index)
at System.Data.SQLite.SQLiteDataReader.NextResult()
at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
at NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd)
at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, Boolean autoDiscoverTypes, Boolean callable, RowSelection selection, ISessionImplementor session)
at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters)
我使用NHibernate版本3.1.0.4,Sy stem.Date.SQLite版本2.0.50727
你可以檢查你的hbm.xml映射是否真的設置爲嵌入式資源? – Firo
它是,同樣的hbm與oracle會話一起工作 – Wieknot