質問

新しいプロジェクトで 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を確認できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top