5

アプリケーションの問題についてサポートが必要です。

Visual Studio でプロジェクトを作成し、Fluent NHibernate をインストールして構成しました。すべてを正しく構成でき、データベースに接続できました。

テーブルにいくつかの行を挿入しようとしましたが、すべて問題ありませんでしたが、アプリケーションを再起動するたびに、テーブルが削除されて再作成され、すべてのデータが失われていることに気付きました。

次を使用してこの問題を解決しました。

.ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(true, true))

それ以外の:

.ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, true))

ここまでは問題ありませんが、ここで問題が発生します。Id、Nameの 2 つのフィールドを持つクラス Person.cs があるとします。そして、 Addressという新しいプロパティを追加したいとしましょう。プロパティをクラスに追加し、アプリケーションを実行します。いくつかの行を追加してデータベースをチェックして、Address という名前の新しい列が作成され、古いエントリにnull値が挿入されていることを確認します。

ここで気が変わって、新しいプロパティ Address を削除することにしたとしましょう。Person.cs クラスからプロパティを削除し、アプリケーションを実行します。いくつかのエントリを挿入し、データベースをチェックして、列 Address が削除されておらず、テーブルに残っていることを確認します。

なぜこれが正確に起こっているのですか?マッピング構成がすべてを行うべきではありませんか? 不要になった列は、クラスに新しいプロパティを追加するときに作成されるのと同じ方法で、データを失うことなくデータベースに削除されることを期待しています。私は何をすべきか?

4

1 に答える 1

4

SchemaExport/SchemaUpdate は移行フレームワークではありません。

これらは、ドメインがデータベースで使用できることを確認するだけであり、開発中に (本番環境ではなく) 役立ちます。

于 2013-03-11T02:05:31.073 に答える