1

テスト用のインメモリSQLiteDBを作成するための次のコードがあります。

        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);

これはほとんどの場合正常に機能しているように見えますが、残念ながら、すべての列がnull許容ではないものとして作成されています。

たとえば、2つのクラスがあります。

InternalFundおよびExternalFund。両方とも同じテーブルから継承しFund、両方とも同じテーブルに永続化します。

ExternalFund列がありますがManager_IDInternalFundありません。InternalFund残念ながら、これはSQL例外をスローするため、永続化できないことを意味します。

テストに参照整合性は必要ないので、すべての列をnull許容にすることができれば幸いです。

誰かがこれを行う方法を知っていますか?

ありがとう

Stu

4

2 に答える 2

1

コンベンションのFluentNhibernate機能を使用してみてください。このリンクをチェックすると、最初の例はnull可能性をデフォルトとして設定していることがわかります。

于 2013-01-11T19:46:49.790 に答える
1

おっと、ひどくごめんなさい。特に明記されていない限り、SQLite DBはnull可能性を想定しているようです。これは、createステートメントでnull可能性を要求するTSQLとは異なります。

実際、サブメソッドに隠されているのは、特定のプロパティのマッピングでnull以外が設定されていることです。これを削除すると、問題が分類されました。

コンベンションについて投稿してくれてありがとう、私は彼らが分類するかもしれない別の問題があるので私は見ていきます。

乾杯

Stu

于 2013-01-14T10:27:59.340 に答える