1

我有以下代碼來創建一個內存中的SQLite數據庫來進行測試:的SQLite數據庫產生不可爲空列

 Configuration config = null; 
     FluentConfiguration fluentConfiguration = Fluently.Configure().Database(SQLiteConfiguration.Standard.InMemory().ShowSql() 
      ).Mappings(m => 
       { 
        m.FluentMappings.AddFromAssemblyOf<ReturnSourceMap>(); 
        m.HbmMappings.AddFromAssemblyOf<ReturnSourceMap>(); 
        m.FluentMappings.AddFromAssemblyOf<EchoTransaction>(); 
       }).ExposeConfiguration(c => config = c); 

     ISessionFactory sessionFactory = fluentConfiguration.BuildSessionFactory(); 

     _session = sessionFactory.OpenSession(); 

     new SchemaExport(config).Execute(true, true, false, _session.Connection, Console.Out); 

這似乎很好地工作對於大多數事情,但不幸的是它將所有列創建爲不可爲空。

比如我有兩個類:

InternalFundExternalFund。兩者都從Fund繼承,並且都堅持到同一個表。

ExternalFund有一列Manager_ID,InternalFund沒有。不幸的是,這意味着我不能堅持InternalFund,因爲它會拋出一個SQL異常。

我不需要我的測試的參照完整性,所以如果我可以使所有列都可以爲空,我會很高興。

有誰知道如何做到這一點?

感謝

斯圖

回答

1

糟糕,非常抱歉。似乎SQLite數據庫假定可以爲空,除非另有說明 - 不同於在創建語句中要求它的TSQL。

事實上,我發現隱藏在一個子方法中,該特定屬性在映射中具有非空集。刪除這個排序的問題。

感謝您發佈約定,雖然我會看看,因爲我有另一個問題,他們可能會排序。

乾杯

斯圖

1

你應該嘗試使用的Conventions的FluentNhibernate功能。如果您查看this鏈接,您會看到第一個示例是將空性設置爲默認值。