NHibernate SchemaExportおよびConfigure()catch-22
-
06-07-2019 - |
質問
新しいプロジェクトで DDD を使用し、最初にクラスをモデル化します。次に、クラスライブラリに基づいてデータベーススキーマを生成します。私の計画は、NHibernate hbm2ddlツール SchemaExport
でこれを行うことです。
問題は、奇妙なcatch-22問題が原因で SchemaExport
が機能しないことです。 SchemaExport
にはが必要です構成
オブジェクト自体には、有効なNHibernate構成ファイルとデータベースマッピングのセットが必要です。
ここでのキャッチ22は、Configure()を実行すると、"エンティティ 'MyEntity'のテーブル名を特定できませんでした。 'table'属性を削除するか、値を割り当てます。"
したがって、 Configure()
メソッドではテーブルが存在する必要がありますが、 SchemaExport
は想定されていますテーブルが存在しないために作成できない Configuration
に基づいて作成する。
それで、 Configure()なしで実際に何か有用なことを行うために
を投げて、 SchemaExport
に必要なマッピングを含む有効なNHibernate Configuration
を作成することになっています。 SchemaExport
で作成されるテーブルが見つからないと文句を言いますか? 「モード」はありますか Configuration
オブジェクトを設定して、指定されたテーブルの存在をデータベースでチェックしないようにすることができますか、または他に何かする必要がありますか?
解決
構成ファイルを投稿できますか?
テーブルが存在しない状態で常にこのメソッドを使用し、その場でスキーマを生成できます。私の推測では、.hbmファイルの1つに何か異常がある可能性があります。スキーマを1つのテーブルに切り取り、機能させてから、そこから構築してみてください。参考として、dbスキーマの生成に使用するコードを以下に示します。
var cfg = new Configuration();
cfg.Configure();
var schema = new SchemaExport(cfg);
schema.Create(true, true);
これにより、スクリプトがコンソールにプッシュされるため、dbに対して生成されたSQLを確認できます。