我正在开发一个ASP.NET MVC项目。在我的解决方案中,我有以下项目: BlogApp.Web(ASP.NET MVC应用程序), BlogApp.Data(类库)
我想知道如何实现数据访问层。我想使用EntityFramework Code First方法。我在想Repository模式,但这真的有必要吗?我已经读过它只是ORM之上的下一层,这不是真正需要的。所以不要像以下那样编写方法:
GetAllPosts(Tag t) {
db.Posts.Where(p => p.Tags.Contains(t)).Skip(x).Take(y).Select(p => p);
}
我在控制器中创建db上下文并编写相同的查询?我不需要在我的模型周围实现分页和写包装。
答案 0 :(得分:1)
你可能听说过的存储库模式是它在某些阵营中失宠 - 例如Jimmy Bogard's blog。这并不意味着查询应该直接写在控制器中,除非您的应用程序非常非常简单。
正如已经指出的那样,你的查询应该只写在你的控制器可以使用的一个地方 - 这可以是Repository方法或专用的Query Object,它们都提供了更好的抽象并避免了重复。 / p>
简单地说 - 您的应用程序是否有多个前端,需要为您的数据访问层单独组装?如果不是,您可能需要考虑合并两个程序集并仅使用名称空间来保持组织有序。
答案 1 :(得分:0)
不确定这个问题是否属于这里。
无论如何,如果你在控制器中写入数据访问逻辑,并且在另一个控制器中需要相同的逻辑,你会怎么做?复制 - 粘贴到新控制器?那不好。任何时候,你在复制和粘贴你需要退后一步,这里肯定有问题(也就是代码味道)。
将逻辑分成不同的层将使您的代码更易于维护和测试。相信我!