2011-01-24 27 views
9

ストアドプロシージャを変更したときにDBMLファイルが更新されないという深刻な不満があります。LINQとストアドプロシージャDBML更新の問題

これは何が起こるかです。私は私のストアドプロシージャを変更します。その後、.DBMLファイルからストアドプロシージャを削除し、それを再度追加します。 .DBMLファイルで正しく更新されますが、.designer.csファイルは更新されません。私が見つけた唯一の回避策は、ストアドプロシージャを削除し、ストアドプロシージャが返すテーブルを削除し、テーブルを追加し、ストアドプロシージャ(.DBMLファイルのすべて)を追加することです。そして、これは時々トリックを行うだけです。

他に誰かがこの問題を抱えていますか?確かにVisual Studio 2008でDBMLファイルを更新するより適切な方法がありますか?事前に

おかげ

+0

DBMLビジュアルデザイナーは非常に「ワンショット」です。何らかの更新機能はありません。この問題を解決するには、HuagatiのDBML Toolsのようなサードパーティのツールを調べるか、基礎となるデータベースが変更されたときに既存のモデルをデータベースから更新するためのサポートがさらに強化されたEntity Framework 4に切り替えます。 –

+0

私はこれが古いことは知っていますが、今日(私はそれが新しいデザイナークラスを追加する)動作が期待されているかどうかを知るためにそれに直面しました。新しく作成したクラスを古いクラスにカットアンドペーストして、新しく作成したクラスを削除するだけではいかがでしょうか。それはあなたのバージョンコントロールでソートされたものを保ち、あなたに正しいクラスを与えます。 – Ron

答えて

13

SPの変更時および変更時にDBMLファイルが更新されることはありません。

私はあなたにそれを取り除くための提案があります。これが我々のプロジェクトで従ったものです。

SPで入力パラメータまたは出力パラメータのいずれかを更新したときはいつでもdbmlファイルをxmlファイルとして編集します(VSのみでxmlとしてopenを使用できます)。dbmlファイルを保存します。これにより、designer.csファイルの変更も自動的に更新されます。このようにしてdbmlからSPを削除して再追加して更新を取得する必要はありません。これは手作業ではありますが、本当に助けになります。

このようにして、デフォルト名がSP名と同じであるため、SPから取得している出力のエンティティ名(エンティティの命名規則に準拠する)を変更することもできます。

+3

注:Visual Studioに_designer.cs_ファイルを再生成させるには、Visual Studio内でXMLとして_dbml_ファイルを**編集する必要があります(ソリューションエクスプローラで右クリックし、_Open With ...を選択してください)。別のテキストエディタで編集/保存しても、_designer.cs_ファイルは再生成されません。 –

+0

VS 2012のテキストエディタで編集しました。 –

1

1は、SQLおよびVSは完全に2つの別々のサービスであることに留意してください。それは単に一緒に接続し、それがお互いを同期させることを意味しません。

2私の意見では、DBMLはちょっとMS-SQLだけです。私はDB Factoryを作成するためにインターフェイスをベースにして、DataTableやDataSetとしてデータを返します。このコードはすべての標準のdbに使用できます。

4

enter image description hereもう1つ私がしたのは、ビューからサーバーエクスプローラを開いたことです。そこにdb接続がリストされます。そこにあなたのデータベースを指し示すその特定の接続を右クリックして更新してください。新しいストアドプロシージャを追加した場合、または更新した場合は自動的に更新されます。

0

また、Entity Framework 6ではこれが問題になります。 .edmxファイル内の変更された要素と「データベースからのモデルの更新」を削除します。