2

我对实体框架很陌生。我收到一个错误

具有临时 EntityKey 值的对象不能附加到对象上下文

我想我做错了什么。

我有一个Customer表和Address表,其中Address表具有客户 ID 作为外键。

我想向客户实体添加一个新地址并保持会话状态,并且在下次通话中我想保存它。这只是一个例子。

using (var db = new MyModel())
{
    Customer cust = db.Customers.SingleOrDefault(c => C.ID == 1);
    Address addr = new Address();
    addr.Street = "123 super st";
    cust.Addresses.Add(addr);   
    Session["customer"] = cust;         
}   

Customer SessionCustomer = (Customer)Session["customer"];
Customer.Comments = "Added new address"; 

using (var db = new MyModel())
{
    db.Customers.Attach(SessionCustomer); //This throws exception: An object with a temporary EntityKey value cannot be attached to an object context
    db.ObjectStateManager.ChangeObjectState(SessionCustomer, System.Data.EntityState.Modified);
    db.SaveChanges(); 
}

任何帮助表示赞赏。谢谢你。

4

1 回答 1

0

尝试使用db.Customers.AddObject()将对象重新附加到数据上下文。
也看看这个:http: //msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.addobject.aspx

干杯

于 2012-04-16T20:02:35.147 回答