2013-08-03 29 views
36

ストアドプロシージャとEDMXに無限の問題がありました。私は手続きを作成し、データベースからモデルを更新し、すべてが働いた。私はその後、列を削除し、ストアドプロシージャで新しい列を追加しました。私はモデルを更新しましたが、EDMXはproc定義をリフレッシュするようには見えませんでした。ストアドプロシージャと更新EDMX

私はprocを削除して更新しましたが、手動ですべての参照を削除する必要がありました。私はprocの名前を変更し、データベースからのモデル更新を介してインポートするだけで終わった。

私はちょうど同じ問題を抱えていました。新しい列を追加し、既存の列の名前を変更しました。私はデータベースから更新モデル経由でEDMXをリフレッシュしましたが、EDMXに変更はなく、明らかに実行時には失敗します。 Entity Frameworkでストアドプロシージャを更新する方法

enter image description here

私は、PROCを取り除いたモデルを再生し、procのための「CS」ファイルを削除し、コンパイルされ、その後、再びデータベースに手順を追加したモデルを再生成し、強打!同じモデルを3回追加し、最後のモデルのみが正しいことを示します。どうして古いバージョンを引き返すのですか?

答えて

7

EDMXを終了し、データベースからストアドプロシージャを削除してデータベースをモデルから更新した後でも、手作業でXMLを編集しても問題はありませんでした。 XMLから行を削除することで問題は解決しました。ブラウザをモデル化するために

89

(このソリューションは、私は他のEFのバージョンで試していないEF 6のためである。それは素敵な作品。)


移動します。 MyStoreProcはストアドプロシージャの名前です(例として)。 MyStoreProcは3か所に表示されます。アンダー

  1. 第一place-コンプレックスの各種タイプ - >関数の輸入の下でMyStoreProc_result
  2. 第二Place-として - ストアド Procdures /関数の下で - - >などMyStoreProc
  3. 3位>などMyStoreProc

3つすべてをモデルから削除します。 edmxを保存します(ウィンドウをクリックしてからCtrl + Sキーを押す)。次に、右クリックし、データベースからモデルを更新をクリックします。次に、更新されたストアドプロシージャを追加し、再度保存します。それは、正常に動作し、そうでない場合と同じ例外がスローされた場合に任意の手間をかけずに解決:)すべての

+0

あなたは命の恩人です:D ...ありがとう! – Muhammedh

+1

ありがとうMuhammedh – SArifin

+0

これは非常に参考になりました、ありがとう!私はedmxダイアグラムでこれを探していて、ストアドプロシージャはそこに表示されていないので、私はちょっと不本意だったことを認めなければなりません - テーブルとビューのみです。 –

1

まず

は、「データベースからの更新モデル」を通して、あなたのSPを更新するか、その後、以下の手順に従ってください。 1. .edmxファイルをダブルクリックします。 2.モデルブラウザで、複合型、関数インポート、およびストアドプロシージャ/関数からSPを削除します。 3.すべて保存します。 4.「データベースからのモデルの更新」でSPを再度追加してください。 5.すべてを保存します。

関連する問題