解決策を見つけることができず、助けが必要なシナリオがあります。これを達成するにはどうすればよいですか。クライアントの現在のレコードを取得して、更新する代わりに、新しいレコードをテーブルに追加したいです。履歴変更情報
client c = new client();
using (DBEntities db = new DBEntities())
{
// get current records in the client table for client
IQueryable<client> co = from p in db.client where p.CUS_NUMBER == scd.cus_number && p.isCurrent == true select p;
c = co.First();
//update email and and address
c.EMAIL = Helper.CleanInput("mymail@mm.com");
c.ADDRESS = Helper.CleanInput("123 Sheppard");
//instead of updating current record I'd like to add new record to the table to keep historical changes
db.AddToclient(c);
db.SaveChanges();
//I get error that
//An object with the same key already exists in the ObjectStateManager.
//The existing object is in the Modified state. An object can only be added to
//the ObjectStateManager again if it is in the added state.
完全なエラー
同じキーを持つオブジェクトが ObjectStateManager に既に存在します。既存のオブジェクトは Modified 状態です。オブジェクトは、追加された状態にある場合にのみ、ObjectStateManager に再度追加できます。