私はEntity Framework(V5と思っています)を使用しています。現在、テーブルに新しい行を追加しようとしています。私が追加したいテーブルには、値 "PRN"(基本的に一意の顧客ID)と関連するシーケンス番号に基づく複合主キーがあります。この表の情報が更新されるたびに、PRNの新しい行を挿入し、シーケンス番号を増やします。シーケンスナンバーは、ユニークではないためデータベース上の自動インクリメント値またはIDENTITYとして定義されません。シーケンス番号はPRNごとに一意です。コンポジットプライマリキーを含むエンティティを追加します。
次のコードを実行すると、InvalidOperationExceptionが発生します。「プロパティ 'DDIPhasedPayment_Seq_Num'はオブジェクトのキー情報の一部であり、変更できません。
プライマリキーのPRN部分のみを変更してレコードを保存すると(Seq_Numのデフォルト値は0になります)、他のレコードを変更しようとすると例外がスローされますPKの一部。 EFを怒らせることなく、このテーブルに行を追加して追加するにはどうすればよいですか?
var nextSequence = GetNextPhasedPaymentSequenceNumber(message.Prn);
var entity = new Practitioner_DDI_PhasedPayment()
{
PRN = message.Prn,
DDIPhasedPayment_Seq_Num = nextSequence,
TSN = message.Tsn,
//........
//Various other fields populated
//........
};
dbContext.Practitioner_DDI_PhasedPayment.Add(entity);
dbContext.SaveChanges();
あなたは 'GetNextPhasedPaymentSequenceNumber'でPK値を変更していませんか? –