Nhibernate Schemaexportメソッドをどこに置くべきですか?
-
29-09-2019 - |
質問
Nhibernate Schemaexportメソッドをどこに配置すればよいですか。データベースを再作成することにしたときにどのように呼び出す必要がありますか?
これをスタートアッププロジェクト(ASP.NET MVCプロジェクト)に残す必要がありますか?スキーマをエクスポートするためだけに別のコンソールプロジェクトを作成する必要がありますか?
これらの質問はすべて、Webアプリが開始されるたびにスキーマエクスポートを実行したくないという事実に由来していると思います。
それが違いを生むならば、私は流fluent nhibernateを使用しています。
解決
私はこれを別のアセンブリに分けます。これは、さまざまな場所(コンソールアプリ、統合テストのセットアップ、インストーラーなど)から使用できます。
他のヒント
アイデアとして:オプションでコマンドライン引数を取得するProjectInstallerに配置できます。そのため、そのためだけに追加のコンソールアプリを用意する必要はありません。
個人的には、2つのテスト(この場合はヌニットを使用)を使用してデータベースを作成または更新します。どちらの場合も、データベースがいつ作成または更新されるかを完全に制御する必要があるため、スクリプトのみを生成します。
[Test]
[Ignore]
public void Create_Database_Schema_From_MappingFiles()
{
Configuration cfg = new Configuration();
cfg.Configure();
var schema = new SchemaExport(cfg);
schema.Create(true, false);
}
[Test]
[Ignore]
public void Update_an_existing_database_schema()
{
Configuration cfg = new Configuration();
cfg.Configure();
var update = new SchemaUpdate(cfg);
update.Execute(true, false);
}
所属していません StackOverflow