簡體   English   中英

如何使用 Entity Framework Core 從數據圖中分離實體?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM