使用存储库模式时如何获取单个对象?

时间:2011-10-24 07:57:05

标签: c# database repository-pattern

我在我的最新项目中使用了自制的存储库模式(!)和PetaPoco。当编码一些数据检索程序时,我的大脑突然跳了起来。

目前我有Repo.GetMyObjects从数据库返回IList<MyObject>,而Repo.GetMyObject返回MyObject

这是正确的方法吗?或者我应该让Repo.GetMyObjects返回IEnumerable<MyObject>,然后在我的控制器中使用Repo.GetMyObjects().SingleOrDefault( q => q.ID == MyWantedObjectID)来获取单个对象?

3 个答案:

答案 0 :(得分:1)

要比Ankur的答案更进一步:你的方式实际上更正确,因为必须添加SingleOrDefault()次调用似乎是存储库应该为你做的事情。

答案 1 :(得分:0)

让你的Repo.GetMyObject在那里下注并让它做你所描述的。因此,将来如果需要,您可以更改实施,所有呼叫者都不需要任何更改。

答案 2 :(得分:0)

如果只需要一个MyObject个实例,那么检索它们将是愚蠢的。如果您的数据库中有数千个实例,请考虑这为您提供的性能成本。

因此,您需要在存储库中使用GetMyObject方法,该方法会检索您感兴趣的唯一对象。