我正在使用SQL Server,Framework 3.5,C# 我的产品表类似于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中已存在具有相同键的对象。现有对象处于Unchanged状态。如果对象处于添加状态,则只能再次添加到ObjectStateManager。
如何解决这个问题?
答案 0 :(得分: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();
这是我的创建实体参考功能
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;
}
希望这会节省许多人的时间。