1

我是使用 ASP.net MVC 框架(和 C# 也是)的新手。我有更多使用 JSP + JSTL MVC 框架的经验。如果需要执行更复杂的 sql,我想知道如何运行自定义查询。在 JSP 框架中,我习惯于创建 DAO 来查询 sql 表,这在 ASP.net 中似乎并非如此。对于 ASP.net,我注意到我们使用 LINQ 对模型中的 DBSet 对象进行查询。

我的问题:

  1. 我在哪里编写自定义查询代码?在模型中?
  2. 我该怎么写?是通过某种 db.execute 语句吗?
  3. 我需要进行任何配置更改吗?
  4. 示例和其他资源会很好。

我尝试浏览 asp.net 上的 asp.net MVC 教程,但找不到任何东西。

4

2 回答 2

2

您如何执行 SQL 查询完全取决于您使用的数据访问框架。您可以使用ADO.NET编写纯 SQL,并以与您期望的方式非常相似的方式执行查询。

在回答您问题的第二部分时,这应该在数据访问层中完成,并且与您的 ASP.NET MVC 应用程序本身完全无关。在该抽象层中实例化和与类通信的任何必要逻辑都应该驻留在您的控制器中(并且,理想情况下,通过使用接口和/或服务层与您的应用程序松散耦合)。

从这个意义上说,是的,它属于模型。但是,请记住,从概念上讲,ASP.NET MVC 中的“M”是域模型(即前面提到的数据访问层),而不是视图模型。视图模型只是一个独立的包装器,旨在存储给定视图的相关数据,并且在大多数情况下应该完全没有任何逻辑。

于 2013-05-31T17:41:42.693 回答
2

在 JSP 框架中,我习惯于创建 DAO 来查询 sql 表,这在 ASP.net 中似乎并非如此。

非常相似,您应该有一个带有 DAO 对象的单独 DAL 项目,并从您的业务层(另一个单独的项目)中引用这些项目。ASP.NET MVC 项目本身将添加对业务层项目的引用,而业务层项目又将添加对 DAL 的引用。这样,您可以保持 3 层架构:

UI (ASP.NET MVC project)
          |
          |
    Business Layer (POCO objects (= to POJO), validation, biz logic) - separate project(s), depending on whether you put your POCO objects in the same project or not.
          |
          |
      Data Access Layer (You can use ADO.NET, EF (LINQ), etc.)

一个 ASP.NET MVC 应用程序通常由 3 个文件夹组成:Models, ViewsControllers但通常放置在Models文件夹中的所有内容实际上都是您的业务对象,因此我倾向于完全摆脱该文件夹,只剩下ViewsControllers文件夹。视图只是 html 标记,几乎。Controllers 类只是从业务层调用方法并将结果传递给视图。例如,一个 UserController 类看起来像这样:

public class UserController : Controller 
{
        public ActionResult Index()
        {
            var allUsers = UserBusLayer.User.GetAll();
            return View(allUsers);
        }
}
于 2013-05-31T18:05:19.567 回答