2012-04-12 9 views
1

Entity Framework 4.3.1を使用していて、テーブルに新しいレコードを挿入しようとしています。ProductVersionエンティティはベースです。コンテナキーを使用してEntity Frameworkを挿入する

ProductVersionエンティティはProductIdProductOrdinalと呼ばれるテーブルの複合主キーを構成する2つの特性を有しています。

誰かが製品のエントリを更新すると、ProductVersionエンティティを作成して、自分のリポジトリに戻し、ProductOrdinalプロパティを増やして、コンテキストにエンティティを追加して保存しようとしています。

私は、次のエラーを取得しておいてください。

The property 'ProductOrdinal' is part of the object's key information and cannot be modified.

がキーを構成する列の自動番号付けされていませんどちらも、私は次のように私のPOCOでプロパティを注釈を付けています

[Key, Column("PROD_Ordinal", Order=2), DatabaseGenerated(DatabaseGeneratedOption.None)] 
public long ProductOrdinal { get; set; } 
+1

例外と説明から、既存の 'ProductVersion'インスタンスの 'ProductOrdinal'プロパティをインクリメントして保存しようとしているようです。 既存のインスタンスから 'ProductVersion'の新しいインスタンスを作成し、 'ProductOrdinal'プロパティをインクリメントして新しいインスタンスを保存します。 – alwayslearning

+0

私はそれをチェックします。あなたが正しいかもしれないと思います。 – Maxmanzero

+1

あなたは本当に正しいです。文脈はまだ開いていましたので、「現在の」オブジェクトを更新し、私が比較したのと同じオブジェクトを更新して、すでに挿入されているキーを更新しようとしていると不平を言っていました。 – Maxmanzero

答えて

1

Marc_Sをなぜこれがうまくいかなかったのかという点について、彼のコメントの中で正確に正しいものでした。

例外と説明から、既存の 'ProductVersion'インスタンスの 'ProductOrdinal'プロパティをインクリメントして保存しようとしているようです。おそらく、既存のインスタンスから 'ProductVersion'の新しいインスタンスを作成し、 'ProductOrdinal'プロパティをインクリメントして新しいインスタンスを保存することです。

関連する問題