2009-06-21 5 views
3

新しいプロジェクトでDDDを使い、私のクラスをモデル化してからクラスライブラリに基づいてデータベーススキーマを生成します。私の計画は、NHibernate hbm2ddlツールSchemaExportでこれを行うことです。NHibernate SchemaExportとConfigure()catch-22

問題は、私はSchemaExportが原因で、それは私を置く奇妙なキャッチ22問題の仕事を得ることができないということである。SchemaExport自体は有効なNHibernateの設定ファイルなどのセットが必要Configurationオブジェクトが必要ですデータベースマッピング。

キャッチ-22ここでは、私は設定を()を実行するとき、それはSchemaExportは、私が作成することはできませんConfigurationに基づいて、それを作成することになっている間にConfigure()方法は、存在するテーブルを必要とするので、"Could not determine the name of the table for entity 'MyEntity'; remove the 'table' attribute or assign a value to it."を不平を言うことですテーブルが存在しないためです。

だから、地球上で私はConfigure()スローをせずに有効なNHibernateのConfigurationSchemaExportが実際に役に立つ何かをするために必要なマッピングを含む作成し、それがSchemaExportで作成されるテーブルを見つけることができないと文句を言うことになっていますか?私はConfigurationオブジェクトを設定することができる "モード"はありますか?それは、指定されたテーブルの存在をデータベースでチェックしないでしょうか?

答えて

9

設定ファイルを投稿できますか?

私はテーブルが存在しないこのメソッドを常に使用し、その場でスキーマを生成することができます。私の推測では、あなたの.hbmファイルの中に何かがあるかもしれないということです。スキーマを1つのテーブルに縮小して作業し、そこから構築してみてください。あなたはSQLのDBに対して生成されたものを見ることができるようにこれはまた、あなたのためのコンソールにスクリプトをプッシュします

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

:参考までに、ここで私は、DBスキーマを生成するために使用するコードです。

+2

チップをありがとう。私はHBMを自分で書くのではなく、Fluent NHibernateによって動的に生成されるので、結果として生じるHBMの 'table'属性に設定される "GetTableName"規則にエラーがあることに気付かなかった空の文字列 生成されたHBMファイルを手に入れることで、問題が非常に明確になり、数秒で修正できました。わーい! :) –

関連する問題