Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 执行object.add还是repository.add更好?_C#_Design Patterns_Repository Pattern - Fatal编程技术网

C# 执行object.add还是repository.add更好?

C# 执行object.add还是repository.add更好?,c#,design-patterns,repository-pattern,C#,Design Patterns,Repository Pattern,我正在使用存储库模式。我正在建立我所有的对象,我已经到了一个点,在一对多的关系中我有一个对象 我想知道的是这样做是否更好 myAssocFile.BlogId = myBlogObject.BlogId; repository.Add(myAssocFile); myBlogObject.Add(myAssocFile); 或者是做得更好 myAssocFile.BlogId = myBlogObject.BlogId; repository.Add(myAssocFile); myBlo

我正在使用存储库模式。我正在建立我所有的对象,我已经到了一个点,在一对多的关系中我有一个对象

我想知道的是这样做是否更好

myAssocFile.BlogId = myBlogObject.BlogId;
repository.Add(myAssocFile);
myBlogObject.Add(myAssocFile);
或者是做得更好

myAssocFile.BlogId = myBlogObject.BlogId;
repository.Add(myAssocFile);
myBlogObject.Add(myAssocFile);

希望有人能告诉我从长远来看什么更好?

通过使用repository.add方法,您可以在可识别的位置添加日志记录/错误检查/和其他逻辑

如果使用object.add方法,则需要创建一个分部类并重载/重写object.add方法来执行相同的操作。对于所有开发人员来说,这并不像存储库方法那样清晰


因此,在我看来,您应该通过存储库进行所有数据存储交互(在您的情况下,这不是理想的解决方案)

响应模式允许您更好地控制对象的持久性和构造。我要补充的一点是,存储库模式(至少对我来说)本质上更易于测试,并且能够承受依赖性注入而不会产生混淆。另外,如果考虑实体对象设计,父类添加子对象的能力是否违反了单一责任规则?它应该关心如何添加一个孩子吗?它需要知道额外的逻辑吗?如果该逻辑需要更改或需要测试,则通过存储库进行更改可能更容易。

您应该首先确定哪些实体可以被视为您的(聚合根)[,以便使用它们通过其父存储库处理子对象。