0

MVC アプリケーションで、ストアド プロシージャを関数インポートとしてインポートしました (EDMX ファイル内)。

ストアド プロシージャが変更されました (新しいパラメーター) が、更新方法がわかりません。

今のところ、手動​​で削除して再度追加しましたが、これを達成するための最良の方法を知りたいです。

アップデート:

ウィザードでオプションを見つけましたupdate model from database。そこに更新タブがありますが、更新しようとすると、新しいパラメーターが作成されません

4

1 に答える 1

0

まず、問題を理解するために知っておくべきことは、EDMXファイルは 3 つの異なるセクションを含む単なる XML ファイルであることです。

  • CSDL: 概念スキーマ定義言語
  • SSDL: ストアスキーマ定義言語
  • MSL: マッピング仕様言語

にはCSDL、概念モデルを構成するエンティティと関係が含まれています。はSSDLDB モデルを記述し、MSLは 2 間のマッピングです。

「DB からモデルを更新」プロセスは更新します(現在の DB スキーマと矛盾するものはすべて変更します)。DB スキーマに新しいものを追加した場合にSSDLのみ変更されます。CSDL

概念スキーマは DB スキーマとは異なる場合があるため、これは非常に正常な動作です (ドメイン モデルを DB モデルとまったく同じように見せたい場合を除きます。これは明らかに OOP/DDD のベスト プラクティスとは思えません)。

関数のインポート メカニズムも同じように機能します。新しいストアド プロシージャをインポートするとすぐに、新しいFunctionImport要素が に追加されますCSDL。この新しい要素は、パラメータを含む SP を記述します。先ほど言ったように、更新ウィザードを実行すると、新しいものだけが追加されCSDLます。そのため、DB の SP パラメータを変更しても、概念モデルでは変更されません。

概念モデルを強制的に変更するには、EDMX を開き、モデル ブラウザーに移動して、関数のインポート エントリを展開します。

  • すべてを更新したい場合は、関数を削除して再度インポートするだけです
  • 入力パラメーターを変更する場合は、適切な関数を展開し、パラメーターを削除して関数を更新します
  • 戻り型のみを更新する場合は、適切な関数を右クリックし、更新を選択して更新をクリックします
于 2013-07-09T08:47:10.947 に答える