2012-02-07 7 views
1

最近、データベースのLINQ to SQLをC#Windows Formsプロジェクト用に使用し始めました。今まで、私はデータアクセスレイヤーを実装することがどれほど速かったかに非常に感銘を受けました。私が直面しています問題は要するにデータベーススキーマの変更後にLINQからSQLへのファイルを更新するためのソリューション

Best way to update LINQ to SQL classes after database schema change

以下2008からのポストに似て、私のようなデータベースへの軽微な変更を行った後、SQLファイルにLINQを更新するための効率的な解決策を見つけるのに苦労しています制約、外部キー、新しい列など...

これまでのところ、LINQ to SQLデザイナーのテーブルを削除してデザイナーに戻しています。しかし、私は今、デザイナーの多くの団体の名前を変更する必要があります。問題は、LINQ to SQLファイルを再作成するたびに、手動でファイルに加えた変更が失われることです。誰かが私にこの問題を解決するための新しい解決策や方法があるかどうか教えてもらえますか? SQLMetalとHuagatiは優れたツールであると私が挙げた記事や他の多くの情報源にも言及されています。また、デザイナでLINQ to SQLファイルを手動で作成するのではなく、デザイナで自動生成するのではなく、Hibernate with Javaを使用するときに行う必要があります。

私は、手動でドメインクラスとマッピングファイルを作成することが消費されることがわかります。私はSQLMetalやHuagatiに慣れていません。誰もがこの問題に対処する最もエレガントな、または好んだ方法をお勧めしますか?私はEntity Frameworkを使用できることを知っていますが、私はこのプロジェクトを継承しており、締め切りは非常に厳しいものです。私はこのフェーズが完了したら、それを別のフレームワークにリファクタリングすることができます。

答えて

1

多くの研究と読書の後、マイナーデータベースの変更後に私のDBMLを更新する最良の解決策は、手動でファイルを編集することだと判断しました。 DBMLを更新するために使用される手順は以下の通りです:

  1. DBMLファイルXMLエディターで
  2. オープンを右クリックし
  3. 追加または
  4. が追加または任意の関連付けを変更影響を受けるテーブルの列を変更します
  5. 保存DBML
  6. これがnのプロジェクト

に再構築理想的ですが、数回行われるとデータ型の変更、キーの追加など、データベースに加える必要のある変更の種類がかなり痛いです。

0

I don ' dbmlまたはlinq2sqlが生成したファイルをtouchすると、変更が上書きされる危険性があるためです。私は生成された部分クラスのみを使用します。データベーススキーマが変更されたら、古いテーブルをdbml-editorから削除し、新しいテーブルをそこに引き出します。

+0

私がDBMLを直接変更する唯一の理由は、関連名を変更することです。私が拡張性の方法で保有するすべてのもの。 linqが生成するアソシエーション名を使用できることがわかりますか?私の問題は、同じテーブル(つまり参照データ)に多くの外部キーがある場合、OrderStatus、TransactionStatusなどのように意味のあるものではなく、すべての関連が(RefData、RefData1、RefData2)トランザクションステータスは、同じテーブルに格納された参照データです。 – Grasshopper

関連する問題