我在我的最新项目中使用了自制的存储库模式(!)和PetaPoco。当编码一些数据检索程序时,我的大脑突然跳了起来。
目前我有Repo.GetMyObjects
从数据库返回IList<MyObject>
,而Repo.GetMyObject
返回MyObject
。
这是正确的方法吗?或者我应该让Repo.GetMyObjects
返回IEnumerable<MyObject>
,然后在我的控制器中使用Repo.GetMyObjects().SingleOrDefault( q => q.ID == MyWantedObjectID)
来获取单个对象?
答案 0 :(得分:1)
要比Ankur的答案更进一步:你的方式实际上更正确,因为必须添加SingleOrDefault()
次调用似乎是存储库应该为你做的事情。
答案 1 :(得分:0)
让你的Repo.GetMyObject
在那里下注并让它做你所描述的。因此,将来如果需要,您可以更改实施,所有呼叫者都不需要任何更改。
答案 2 :(得分:0)
如果只需要一个MyObject
个实例,那么检索它们将是愚蠢的。如果您的数据库中有数千个实例,请考虑这为您提供的性能成本。
因此,您需要在存储库中使用GetMyObject
方法,该方法会检索您感兴趣的唯一对象。