このことは私を夢中にさせ、エラーは私にとってまったく無意味です:
DefiningQueryがあり、現在の操作をサポートする要素が要素に存在しないため、EntitySet 'TableB'を更新できません。
私のテーブルは次のように配置されます。
TableA int idA(ID、主キー) ... TableB int idA(TableAのFK。 idA) int val
TableBには、SQLサーバーに定義された主キーがありません。 Entity Frameworkはテーブルと関連付けをインポートし、両方のフィールドをキーとして設定しました。しかし、テーブルに挿入しようとすると、そのエラーが出力されます!
どうしましたか??
編集:アレックスが提案したように、解決策はこれでした:
両方の列がキーの一部であることは私には問題なかったので、キーをそのまま残しました。
まあ、PrimaryKeyなしでテーブルに遭遇すると、それはビューとして扱われます。
また、StorageModel\EntitySet [n]\DefiningQuery要素のEDMXファイル(XMLエディターで開いて表示)にビューが表示されます。
DefineQueryがある場合、変更関数を追加しない限り、エンティティは読み取り専用になります。挿入、更新、削除のそれぞれに1つずつ、3つの変更関数(ストアドプロシージャ)が必要です。
ただし、次の2つのオプションがあります。
キーの定義を変更します。
あなたの場合、私は(1)をお勧めします。
主キーをテーブルに追加するだけです。それでおしまい。問題が解決しました。
ALTER TABLE <TABLE_NAME>
ADD CONSTRAINT <CONSTRAINT_NAME> PRIMARY KEY(<COLUMN_NAME>)
テーブルに主キーがなく、このエラーメッセージが表示されました。私が注意したことの1つは、キーをテーブルに追加した後、デザイナーを使用してedmxからテーブルをクリアし、edmxを保存し、再度更新してテーブルを再度追加する必要があったことです。すでにビューとして割り当てられているためです。これには、edmxを手動で編集する必要はありませんでした。
主キーをテーブルに追加し、edmxモデルからモデルを削除してから、データベースから更新を選択し、ビルドして実行......
@パランティール。両方のテーブルに主キーが設定されていることを確認し、テーブルに複数の主キーが設定されていることに注意してください。