繁体   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