实体框架1 -如何插入包含导航实体的记录
本文关键字:实体 包含 导航 记录 插入 框架 何插入 | 更新日期: 2023-09-27 18:03:49
我使用SQL Server, Framework 3.5, c#我的Product表是id, name, created_by, group_id
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中已经存在一个具有相同key的对象。现有对象处于Unchanged状态。对象只有处于已添加状态时,才能再次添加到ObjectStateManager中。
如何解决这个问题?
我是这样解决这个问题的
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;
}