EF4有新方法吗?
我可以将它添加到上下文(context.AddOrder(order))
(其中context是我的ObjectContext的一个实例),并且'它'看到它有一个id并更新它吗?
这是非poco,所以我的对象来自EntityObject
答案 0 :(得分:5)
如果它是一个全新的对象,那么您应该使用ObjectContext.AddObject或 ObjectSet.AddObject:
AddObject 方法用于添加在数据库中存在 not 的新创建对象。该实体将获得一个自动生成的临时 EntityKey 及其
EntityState将设置为 Added 。
另一方面, ObjectContext.Attach 和ObjectSet.Attach用于数据库中已经 存在 的实体。而不是将EntityState设置为Added,将结果附加到 Unchanged EntityState中,这意味着它已附加到上下文后没有更改。假设您附加的对象存在于数据库中。
有关此主题的更详细讨论,请查看此帖子:
Entity Framework 4 - AddObject vs Attach
答案 1 :(得分:2)
请改用Attach method。它专为断开连接的对象而设计。
答案 2 :(得分:1)
从Employee Info Starter Kit获取,您可以将代码段视为如下:
public void UpdateEmployee(Employee updatedEmployee)
{
//attaching and making ready for parsistance
if (updatedEmployee.EntityState == EntityState.Detached)
_DatabaseContext.Employees.Attach(updatedEmployee);
_DatabaseContext.ObjectStateManager.ChangeObjectState(updatedEmployee, System.Data.EntityState.Modified);
_DatabaseContext.SaveChanges();
}