代码之家  ›  专栏  ›  技术社区  ›  Laz

如何在存储库中保存聚合(父级和子级)?

  •  1
  • Laz  · 技术社区  · 15 年前

    'Using The Repository Pattern, Is It Best To Save Parent and Children Objects Together Or Separately?' ,存储库保存整个聚合(父级和子级)。

    如何处理这个问题,是否在实际的存储过程中进行编码(如果使用它们的话);你能不能也给孩子们打个电话。。。

    class Country
    {
        List<City> cities;
        ...
    }
    

    以及存储库片段:

    public Save(Country country)
    {
        ...
    
        ICityRepository cityRepository = new CityRepository();
    
        foreach (City city in country.Cities)
        {
            cityRepository.Save(city);
        }
    
        ...
    }
    

    还是有更好的选择?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Michael Hart    15 年前

    如果国家是聚合根(在您的案例中看起来是这样),那么您不应该为城市设置单独的存储库。存储库仅对聚合根是必需的。

        2
  •  0
  •   Adam A    15 年前

    可以将city对象作为xml传递给country存储过程。

    然后只需要一个update/insert/delete查询就可以解决所有问题。