这是我想做的事情:
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答案 0 :(得分:1)
如果您确定该实体位于数据库中且您拥有密钥,则只需将您拥有的对象附加到上下文中即可。请注意,附加实体默认情况下处于Unchanged状态,因为假设属性的所有值都与数据库中的相同。如果不是这种情况(即值不同),则需要将实体的状态更改为已修改。看一下这篇博客文章:http://blogs.msdn.com/b/adonet/archive/2011/01/29/using-dbcontext-in-ef-feature-ctp5-part-4-add-attach-and-entity-states.aspx它描述了几个场景,包括你要问的一个场景。