【发布时间】:2021-11-01 23:17:22
【问题描述】:
我只需要更新一个实体的一两个属性。换句话说,我有一个具有 Id、ParentId、Name 和 Description 的实体。
问题是,当名称更新时,如果数据库中已经存在描述,则会将其清除。
这是代码:
internal void Update(ItemInfo itemInfo)
{
var item = new Item { Id = itemInfo.Id, ParentId = itemInfo.ParentId, Name = itemInfo.Name };
var entry = this.DbContext.Items.Attach(item);
if (item.ParentId != null) entry.Property(x => x.ParentId).IsModified = true;
if (!(String.IsNullOrWhiteSpace(item.Name))) entry.Property(x => x.Name).IsModified = true;
this.SaveChanges();;
}
我认为由于我将特定属性设置为已修改,因此只会更新该属性。
或者我应该先从数据库中获取实体,然后再设置属性并保存。我想避免一次保存两次访问数据库。
【问题讨论】:
-
你的观点是正确的。生成的 SQL 是什么?
-
你先从DB获取,然后更新
-
@CodeNotFound,我不确定生成的 SQL。我该如何观察呢?
-
@viveknuna,好的,我做到了,是的,它工作得很好。
-
@Greg0 那太好了