簡體   English   中英

Nhibernate(流利)SchemaExport和SQlite問題!

[英]Nhibernate(Fluent) SchemaExport and SQlite Problem!

我正在將Nhibernate(Fluent)與Sqlite一起使用,並且我所做的工作沒有任何問題:

  • 為每個表創建POCO EntityClasses,如下所示:

     public class tbl_Manufactor : BusinessObject<tbl_Manufactor> { public virtual string Name { get; set; } } 

實體類都從BusinessObject繼承,其中包含ID屬性和簡單的CRUD函數,我還有其他6個實體類

  1. 使用FluentHibernate創建映射,如下所示:

     using Database.Entitites; using FluentNHibernate.Mapping; namespace Database.Mappings { public class tbl_ManufactorMap : ClassMap<tbl_Manufactor> { public tbl_ManufactorMap() { Id(x => x.ID); Map(x => x.Name); } } } 
  2. 這樣創建Fluent Config:

  var Config = Fluently.Configure() .Database(SQLiteConfiguration.Standard .ConnectionString(c=>c.FromConnectionStringWithKey("dbconnection")) .ShowSql()) .Mappings(m => m.FluentMappings.AddFromAssemblyOf<tbl_Manufactor>()) .ExposeConfiguration(cfg => _configuration = cfg) sessionFactory = Config.BuildSessionFactory(); 
  1. 執行SchemaExport以使用以下方法創建模式:

     new SchemaExport(_configuration) .Create(false, true); 

然后Nhibernate使用正確的表創建了一個可以正常運行的SQlite數據庫!

但是然后我想添加2個實體類(我以與以前相同的方式進行了操作),但是當我運行測試(創建了我的第一個數據庫模式)時,它沒有將新的類(表)添加到數據庫中!

最瘋狂的事情是,每次運行測試時,該測試始終刪除所有已創建的數據庫並使用SchemaExport重新創建它。

有人可以幫我嗎?

您還可以選擇直接將執行用於數據庫更新:

bool script = false;
bool update = true;
new SchemaExport(_configuration).Execute(script, update);

編輯:確保映射類是公共的。

內存中的Sqlite僅在連接的生存期內存在。 因此,對於每個新連接,您都需要從頭開始。

我知道兩種解決方案。 一種是僅對單元測試使用單個會話(和連接)。 另一個是我所做的:我實現了一個連接提供程序,該提供程序始終返回相同的連接。

您可以檢查以下各項:-新的實體類是否在同一程序集中? -還檢查模型中的循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM