2011-07-26 62 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; 
     } 

希望这会节省很多的你的时间。