使用通用存储库ef核心更新整个聚合

时间:2017-03-30 09:57:12

标签: c# asp.net-core .net-core entity-framework-core

我的通用存储库的想法是更新整个aggeregate。

例如,CarPark有多辆汽车。因此,如果我通过CarPark对象更新Car,则应在我的数据库中更新汽车。

var carPark = _carParkRepository.GetAll(cp => cp.Cars).SingleOrDefault();
carPark.Name = "Changed carpark";
carPark.Cars.ElementAt(0).Plate = "changedCar";
_carParkRepository.AddOrUpdate(carPark);

存储库实现:

public void Update(TEntity entity)
{
    EntityEntry dbEntityEntry = _context.Entry(entity);
    dbEntityEntry.State = EntityState.Modified;
    context.SaveChanges();
}

在这种情况下,CarPark的名称将在我的数据库中更新,但车牌不会更新。

这个answer描述了一种在ef6中使用"绘制状态"的方法。

这也是ef核心中通用存储库的最佳解决方案吗?

0 个答案:

没有答案