asp.net-mvc - ASP.NET MVC 数据访问层

标签 asp.net-mvc data-access-layer

我正在开发一个 ASP.NET MVC 项目。在我的解决方案中,我有以下项目: BlogApp.Web(ASP.NET MVC 应用程序), BlogApp.Data(类库)

我想知道如何实现数据访问层。我想使用 EntityFramework Code First 方法。我正在考虑存储库模式,但这真的有必要吗?我读到它只是 ORM 之上的下一层,实际上并不需要。因此,不要编写如下方法:

GetAllPosts(Tag t) {
    db.Posts.Where(p => p.Tags.Contains(t)).Skip(x).Take(y).Select(p => p);
}

我在 Controller 中创建数据库上下文并编写相同的查询?我不需要实现分页并围绕我的模型编写包装器。

最佳答案

您可能听说过存储库模式,它在某些阵营中已经失宠 - 例如参见 Jimmy Bogard's blog 。这并不意味着应该直接在 Controller 中编写查询,除非您的应用程序非常非常简单。

正如已经指出的,您的查询应该只写在 Controller 可以使用的一个地方 - 这可以在存储库方法中或在专用查询对象中,这两者都提供更好的抽象并避免重复。

简单地说 - 您的应用程序是否打算拥有多个前端,这将需要为您的数据访问层提供单独的程序集?如果不是,您可能需要考虑合并两个程序集,并仅使用命名空间来保持事物井井有条。

关于asp.net-mvc - ASP.NET MVC 数据访问层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17291613/

相关文章:

c# - 在 asp.net MVC 中用图片替换站点标题

asp.net - 数据库上下文在 base 的数据表中没有看到任何记录

c# - 数据访问层 (DAL) 设计

dll - POCO,DTO,DLL和贫血域模型

orm - O/R 映射器 - 好或坏

entity-framework - 将 Entity Framework 实体集合从 DAL 传递到业务层的最佳方法?

c# - 如何将特定数据从一个 View 传输到另一个 View

asp.net - 使用 jquery.load 将对象数组传递给 MVC 3

java - firestorm dao 替换的建议

c# - 如何通过 ASP.net (Razor) 中的 onclick 事件更新标签文本?