我有一个客户想要在存储库中更新。
var customer = new Customer{ Name = "Test" }
客户还有更多属性为空,因为我之前没有将它们加载到客户端。因此,这些属性具有所有默认值,例如
null or 0
。
我与最新的 EF 6 有什么关系,仅更新属性名称,并且不会覆盖客户的其他属性?
1.) 我该如何查询/更新客户?
2.) 如果客户有一个集合并且他更改了某些会议的某些属性(但不是所有属性),会发生什么情况 - 那么覆盖行为会如何?
更新伪代码
Open context
Get customer
Close context
Open context
Update customer.name
SAveChanges
Close context
custom.name没有保存,为什么?
如果不先获取整个实体,就无法本地完成此操作,这显然是 2 db 命中。
但是,您可以使用一个扩展来完成您想要的操作: https://github.com/loresoft/EntityFramework.Extended/wiki/Batch-Update-and-Delete
假设您已经生成了模型并且其名称为“MyEntities”,并且如果您要更新现有模型,您应该有一个客户 ID。这是使用 c# 的解决方案。
using (MyEntities db = new MyEntities())
{
// this will retrieve the customer based on ID
Customer cust = db.Customers.FirstOrDefault(c => c.CustomerID == custID);
// you can update each column
cust.Name = "Test";
// save the changes to the entity
db.SaveChanges();
}