Entity Framework 1 - How to insert a record that involves Navigational Entities
I'm using SQL Server, Framework 3.5, C# My Product table is like id, name, created_by, group_id
created_by is a foreign key form users
group_id is foreign key form groups
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();
But I get error on savechanges
// An object with the same key already exists in the ObjectStateManager. The existing object is in the Unchanged state. An object can only be added to the ObjectStateManager again if it is in the added state.
How to fix this?
Here is how I solved my probelm
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();
And here is my CreateEntityReference function
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;
}
Hopefully this will save time of many of you.
精彩评论