2011-07-26 93 views
0

我使用的是SQL Server的一個紀錄,框架3.5,C# 我的產品表就像ID,姓名,CREATED_BY,GROUP_ID實體框架1 - 如何插入涉及導航實體

CREATED_BY是一個外鍵的形式用戶

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中已存在具有相同鍵的對象。現有對象處於「未更改」狀態。如果對象處於添加狀態,則只能將其添加到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(); 

這裏是我的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; 
     } 

希望這會節省很多的你的時間。