我无法将设计置于正确的背后。我正在使用存储库模式来管理我的数据层。在我的一个控制器(MVC3)中,我正在构建一个需要执行连接的LINQ查询。我有两个问题:
BIG EDIT: 现在事情对我来说有点清楚,但我希望有人会跳进这里,帮助我把所有事情都整理好;-)。我要做的是实现规范模式以及我的存储库模式。问题是,我正在使用POCO,我的存储库正在使用一个使用IObjectSets的IContext接口。所以在下面的列表方法中,Posts是一个IObjectSet,Context是一个IContext接口,我将注入我的实际上下文。
我一直在阅读,并且有一些非常好的准备使用代码,比如 implementing-repository-pattern-with-ef4-poco-support和implementing-repository-pattern-with-entity-framework。
这两个示例都使用存储库中的objectContext。是不是更好地抽象出来呢?
我的存储库:
public System.Linq.IQueryable<Post> List()
{
return this.context.Posts;
}
在我的控制器方法中:
var friendquestions = (from q in base._repo.Post.List().OfType<Question>()
from f in _repo.Friends.List()
where f.userId == myid
where q.Author == f.friendId
select q.Id).ToArray();
以下情况有效(为什么?):
var temp = (from q in base._repo.Post.List().OfType<Question>()
where q.Id > 6
select q.Id).ToArray();
这与此处描述的问题基本相同:linq-to-entities-does-not-recognize-the-method
我该如何设计呢?我一直在阅读模型定义的函数,但我不确定这是不是可行的方法?
提前致谢