2

这是我想做的:

var myCustomer = new Customer();
myCustomer.Name = "Bob";
myCustomer.HasAJob = true;
myCustomer.LikesPonies = false;

然后我想将它传递给一个更新方法:

public UpdateCustomer(Customer cust)
{
  using(var context = dbcontext())
  {
     var dbCust = context.Customers.FirstOrDefault(c => c.Name == cust.Name);
     if(dbCust != null)
     {
        // Apply values from cust here so I don't have to do this:
        dbCust.HasAJob = cust.HasAJob;
        dbCust.LikesPonies = cust.LikesPonies
     }
     context.SaveChanges();
  }
}

这样做的原因是我在我的应用程序的多个不同部分和/或跨 DLL 工作。这可能吗?

编辑:发现这个问题非常有用: Update Row if it Exists Else Insert Logic with Entity Framework

4

1 回答 1

1

如果您确定实体在数据库中并且您有密钥,您只需将您拥有的对象附加到上下文中。请注意,附加实体默认处于未更改状态,因为假设所有属性值都与数据库中的相同。如果不是这种情况(即值不同),您需要将实体的状态更改为已修改。看看这篇博文:http: //blogs.msdn.com/b/adonet/archive/2011/01/29/using-dbcontext-in-ef-feature-ctp5-part-4-add-attach- and-entity-states.aspx它描述了几个场景,包括你要问的那个。

于 2012-11-28T23:29:46.877 回答