我正在制作一个图片网站,我想知道我应该如何在我的 Linq to Sql 存储库中构造创建/更新方法?
我有一个结构如下的照片实体:
public class Image
{
public int ID { get; set; }
public int OwnerId { get; set; }
public string Url { get; set; }
public IEnumerable<Tag> Tags { get; set; }
}
我有以下表格:图片、标签、ImageTag
现在,我想知道当我在我的 ImageRepository 中调用我的 CreateImage 方法时,我是否也应该在 Tags 表中创建 Tags 并在 ImageTag 表中进行映射?
同样,当我调用 UpdateImage 时,我是否应该检查标签是否已更改,以及它们是否已删除 ImageTag 表中的条目并添加不同的条目(以及可能向标签表添加新标签)?
或者这两个用例是否应该在单独的存储库调用中发生?
基本上,在典型的 linq to sql 存储库中,通常如何处理这种父/子、一对多关系?
最佳答案
我想说的是,了解模型中实体之间的关系不是存储库的责任。毕竟,如果您要更改持久保存数据的方式(例如,更改为非 SQL 解决方案,或者即使您只是更改数据库架构),您的实体和模型也不应更改。
因此,最好的办法是调用单独的存储库,并将调用包装在一个工作单元中。 (Unit of Work 基本上是一个抽象的交易)。
您的工作单元和对存储库的各种调用将是存储库之上的抽象层。我不知道你模型的其余部分,所以那可能是不同的东西。它可能是 Image 对象上的一个方法。你可以有一个 Mediator .或者,如果您是从 DDD 的角度来处理这个问题,那就是领域服务。
干杯。
关于c# - 您应该如何处理存储库模式中的父实体和子实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7047578/