2

Entity Frameworkでは、Visual Studio内で「データベースからモデルを更新する」たびに、作成されたモデルは使用できません。Entity Frameworkでプライマリキーが不足している場合の対処方法を教えてください。

EFでは、主キーのないテーブルは非常にうまく処理されません。これをビューとして扱います。これにより、EFでテーブルを編集できなくなります。モデル(edmxファイル)をXMLファイルとして開き、EntitySet定義を少し変更することで、この動作を無効にすることができます。これを何度もやり続けるのは面倒です。誰でも主キーを追加するか、すべての更新後にedmxファイルを変更する以外に、より永続的な回避策を見つけましたか?

ところで、私はユニークなキーを使用していますが、2つの列にまたがっています。 EFがこれを扱うことができればうれしいだろうが、EF 4.2ではそうではない。

答えて

4

私は理解していない - あなたは、「一意のキーを」使用している(私はあなたが一意のインデックスまたは一意制約を意味すると仮定)キーは2つの列を持っているので?複数の列を持つ主キーを作成できます。私は、EFは、単一列の主キーとは異なった2列のキーを扱うなぜわからないんだけど、ここでは、複数列の主キーの簡単な例です:もちろん

CREATE TABLE dbo.foobar 
(
    fooID INT, 
    barID INT, 
    PRIMARY KEY (fooID, barID) 
); 

が、他の構文があります事実の後で制約を作成することができます。また、制約に明示的に名前を付ける必要がありますが、単純な例を示したければなりません。

+0

ああ。私が以前に持っていたのは、ユニークなノンクラスタード・キーでした。私はそれを落とし、説明したように2列の主キーを追加しました。 EFはこれをうまくインポートし、問題を解決します。ちなみに、SQL Management Studioで各列を選択して「主キーの追加」をクリックすると、複数列の主キーを追加できることが分かりました。かなり素敵で、面白いことに私はこれまでにそれを発見していませんでした。 –

3

ところで、私はユニークなキーを使用していますが、2つの列にまたがっています。 EFがこれを扱うことができればうれしいだろうが、EF 4.2ではそうではない。

Yes it does;)

+1

コードファーストのアプローチではうまくいくでしょうか?私が尋ねる理由は、上記で説明したシナリオ(データベースファースト)が、EFに自動的に移植されないSQLで定義された2列のユニークキーであることです。 –

+0

私は同じ問題がありました。私は1つの主キー列を追加して、2つの元の列を一意のインデックスにする必要がありました。その後、EFはテーブルを正しくインポートします。 –

関連する問題