3

新しいプロジェクトでDDDを使用し、最初にクラスをモデル化してから、クラスライブラリに基づいてデータベーススキーマを生成したいと思います。私の計画は、NHibernatehbm2ddlツールを使用してこれを行うことですSchemaExport

SchemaExport問題は、 catch-22の奇妙な問題が原因で、を機能させることができないことです。には、有効なNHibernate構成ファイルとデータベースマッピングのセットをSchemaExport必要とするオブジェクトが必要です。Configuration

ここでのキャッチ22は、Configure()を実行すると、文句を言うことです。"Could not determine the name of the table for entity 'MyEntity'; remove the 'table' attribute or assign a value to it."したがって、Configure()メソッドはテーブルが存在する必要がありますが、テーブルが存在しないために作成できないことにSchemaExport基づいてテーブルを作成することになっています。 Configurationtが存在します。

では、いったいどうやって、スローせずに実際に何か便利なことをするConfigurationために必要なマッピングを含む有効なNHibernateを作成し、作成するテーブルが見つからないと文句を言うのでしょうか?指定されたテーブルの存在についてデータベースをチェックしないようにオブジェクトを設定できる「モード」はありますか、それとも他に何かする必要がありますか?SchemaExportConfigure()SchemaExportConfiguration

4

1 に答える 1

9

構成ファイルを投稿できますか?

私はテーブルが存在しない状態でこの方法を常に使用しており、オンザフライでスキーマを生成できます。私の推測では、.hbm ファイルの 1 つに問題がある可能性があります。スキーマを 1 つのテーブルに切り詰めて動作させ、そこから構築してみてください。参考までに、db スキーマを生成するために使用するコードを次に示します。

    var cfg = new Configuration();
    cfg.Configure();
    var schema = new SchemaExport(cfg);
    schema.Create(true, true);

これにより、スクリプトがコンソールにもプッシュされるため、データベースに対して生成された SQL を確認できます。

于 2009-06-21T01:01:29.180 に答える