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