更新实体但不更新空值属性

问题描述 投票:0回答:2

我有一个客户想要在存储库中更新。

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没有保存,为什么?

entity-framework entity-framework-6
2个回答
0
投票

如果不先获取整个实体,就无法本地完成此操作,这显然是 2 db 命中。

但是,您可以使用一个扩展来完成您想要的操作: https://github.com/loresoft/EntityFramework.Extended/wiki/Batch-Update-and-Delete


0
投票

假设您已经生成了模型并且其名称为“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();
}
© www.soinside.com 2019 - 2024. All rights reserved.