[英]How can I detach an entity from data graph using Entity Framework Core?
假設我有一個實體Vehicle
通過TypeId
引用另一個實體Type
。 我想使用實體框架更新Vehicle
但我不想更新TypeId
(或Type
)。
問題是 Entity Framework 想要更新整個圖,結果是Type
實體的屬性在更新Vehicle
時被空值覆蓋。
我想我可以在更新之前從數據源中獲取Type
實體,但似乎沒有必要對數據庫進行兩次額外的調用(讀取和保存)來更新不需要更新的實體。
我寧願將Vehicle
實體從圖表中分離出來,只更新這個實體。 我怎樣才能做到這一點?
編輯:
這是一些使問題更清晰的代碼:
public async Task Update(Vehicle entity)
{
var dataEntity = mapper.Map<VehicleDataEntity>(entity);
await repository.Update(entity.Id, dataEntity);
}
如您所見,數據實體在映射期間被實例化(使用 Automappar)。
更新在一個簡單的通用存儲庫中完成:
public async Task Update(Guid id, TEntity entity)
{
dbContext.Set<TEntity>().Update(entity);
await dbContext.SaveChangesAsync();
}
這是數據 model:
public class VihecleDataEntity : IEntity
{
[Key]
public Guid Id { get; set; }
public string Description { get; set; }
public VihecleTypeEntity Type { get; set; }
}
public class VihecleTypeEntity: IEntity
{
[Key]
public Guid Id { get; set; }
public string Description { get; set; }
}
如果只想更新VehicleDataEntity
屬性,可以將VehicleDataEntity.Type
屬性設置為null
。 這不會刪除關系,但會阻止 EF 更新相關實體的屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.