2011-07-26 9 views
0

航海実体を伴うレコードを挿入する方法、C#の マイProductテーブルには、ID、名前、CREATED_BYのようなものです、Entity Frameworkの1 - 私はFramework 3.5は、SQL Serverを使用してい

CREATED_BYが外部キーの形であるGROUP_IDユーザー

group_idのは、外部キーのフォームグループ

  PRODUCT product  = new PRODUCT(); 

      product.name   = txtName.Text.Trim(); 
      product.USER   = new USER { user_id = Session["UserID"] }; 
      product.GROUP   = new GROUP { group_id = 1 }; 

      _db.AttachTo("USERs", product.USER); 
      _db.AttachTo("GROUPs", product.GROUP); 
      _db.AddToLEAD_TYPE(product); 
      _db.SaveChanges(); 

あるしかし、私はSaveChangesメソッドでエラーが発生します

//同じキーを持つオブジェクトがすでにObjectStateManagerに存在しています。既存のオブジェクトはUnchanged状態です。追加された状態のオブジェクトは、ObjectStateManagerに再度追加することしかできません。

これを修正するにはどうすればよいですか?ここで

答えて

0

は私が

 PRODUCT product  = new PRODUCT(); 
     product.name   = txtName.Text.Trim(); 
     product.USERReference = CreateEntityReference<USER>("MyEntities.USERs", "user_id", Session["UserID"]); 
     product.GROUPReference = CreateEntityReference<GROUP>("MyEntities.GROUPs", "group_id", 1); 

     _db.AddToPRODUCTS(product); 
     _db.SaveChanges(); 

そして、ここに私のprobelmを解決する方法である私のCreateEntityReference機能です

 private EntityReference<T> CreateEntityReference<T> 
      (string qualifiedEntitySetName, string keyName, object keyValue) where T : EntityObject 
     { 
      EntityReference<T> result = new EntityReference<T>(); 
      result.EntityKey = new System.Data.EntityKey(qualifiedEntitySetName, keyName, keyValue); 
      return result; 
     } 

うまくいけば、これはあなたの多くの時間を節約します。

関連する問題