6

ORM ( DevExpress XPONHibernate、またはMS Entity Framework )を使用してデータベースをアップグレードするためのベスト プラクティスは何ですか?

新しいプロジェクトを開始していて、ORMを選択する必要があります。開発プロセスでは、かなり頻繁に中間テスト ビルドをリリースする必要があり、各ビルドでデータベース構造が変更される可能性があります。最新のデータを維持するために、新しいバージョンごとに DB を緩やかにアップグレードする必要があります。

古いソリューションの場合、データベースをv1からv2v2からv3などにアップグレードするための一連の SQL スクリプトを提供し、それらを順番に実行します。

しかし、 ORMではどのように機能するのでしょうか? DB をアップグレードするために SQL スクリプトを作成する必要がありますか?

新しいフィールドを単純に追加するだけでは問題が発生しないことは理解していますが (たとえば、XPO のUpdateSchema() メソッドを参照)、テーブルを分割し、現在のレコードを 2 つの新しいテーブルに再割り当てする必要がある場合はどうすればよいですか?

4

4 に答える 4

0

ほとんどの移行ソリューションは、新しい列の追加、リレーションシップ、列の削除などの簡単なタスクを処理できますが、列の名前を変更すると機能しません(追加ですか、名前の変更に等しい追加の後に削除しますか?その場合のデータ?)

3つのソリューションはすべて、基本的な移行をサポートしています。XPOでは、プロセスの一部として独自のスクリプトを実行することもできます(静的/テスト/定数データなどを挿入するため)。

移行に関してORM固有の機能に依存せずに使用できるMigratorDotNetプロジェクトもあります。

個人的には、開発/テスト環境でのみ自動移行を使用し、クライアント固有のデータベースで実行してv1からv2にアップグレードする場合は、アップグレードスクリプトのフルセットを使用します。

于 2012-05-21T04:29:59.660 に答える
0

ORM ではどのように機能しますか? DB をアップグレードするために SQL スクリプトを作成する必要がありますか?

この質問に対する明確な回答は、Programmer's stackexchange スレッドにあります - What are the criteria for Evaluation an ORM for.NET? 、エンティティ フレームワークとコード スミス ORM テンプレートを使用していくつかのプロジェクトを開発しているときに、ORM に関する私の経験と一致する、あなたの質問に対する簡単な回答を得ました。

ORM はデータ モデルの変更をどのように管理しますか? テーブルを分割し、現在のレコードを 2 つの新しいテーブルに再割り当てする必要がある場合はどうすればよいですか?

特定の範囲内で DB を自動的に更新できるものもあれば、何もしないものもあり、自分で面倒な作業を行う必要があります。その他は、データベースの更新を制御できる変更を処理するためのフレームワークを提供します。つまり、テーブルを追加したり、変化しているデータ型を変更したりするために、数日ごとに誰かがモデルを更新するのに 1 時間費やす必要があります。

参照:
https://softwareengineering.stackexchange.com/questions/6543/what-are-the-benefits-of-using-database-abstraction-by-orm
https://softwareengineering.stackexchange.com/questions/41739/best -arguments-for-against-introducing-orm-technology-into-a-company-dev-proce/41833#41833

于 2012-05-21T05:15:40.723 に答える