2011-10-24 28 views
0

我在我的最新项目中使用了一个自制的存储库模式(!)以及PetaPoco。当编写一些数据检索程序时,我的大脑突然跳了起来。如何使用存储库模式获取单个对象?

目前我有Repo.GetMyObjects,从db返回IList<MyObject>Repo.GetMyObject返回MyObject

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

回答

0

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

0

如果您只需要一个实例,那么检索整个MyObject实例将是愚蠢的。如果数据库中有成千上万的实例,请考虑这会带来的性能成本。

所以,你会在你的仓库,它检索你感兴趣的唯一对象需要一个GetMyObject方法

1

走得更远比ANKUR的回答是:你正在做的方式实际上是比较正确的,因为必须添加SingleOrDefault()调用似乎是存储库应该为您做的事情。

相关问题