C# 在ASP.NET MVC中运行自定义查询

C# 在ASP.NET MVC中运行自定义查询,c#,asp.net-mvc,C#,Asp.net Mvc,我不熟悉使用ASP.NETMVC框架(还有C)。我有更多使用JSP+JSTL MVC框架的经验。如果需要执行更复杂的sql,我想知道如何运行自定义查询。 在JSP框架中,我习惯于创建DAO来查询sql表,这在ASP.net中似乎不是这样。对于ASP.net,我注意到我们使用LINQ对模型中的DBSet对象进行查询 我的问题是: 在哪里编写自定义查询代码?在模型中 我该怎么写呢?它是通过某种db.execute语句实现的吗 我是否需要进行任何配置更改 示例和其他资源会很好 我试图在asp.net上

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

我的问题是:

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

  • 我试图在asp.net上浏览asp.net MVC教程,但什么也找不到。

    执行SQL查询的方式完全取决于您使用的数据访问框架。您可以编写简单的SQL,并以您期望的方式执行查询

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


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

    执行SQL查询的方式完全取决于您使用的数据访问框架。您可以编写简单的SQL,并以您期望的方式执行查询

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

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

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

    这是非常相似的,您应该有一个单独的DAL项目和DAO对象,并引用来自业务层的DAL项目(另一个单独的项目)。ASP.NET MVC项目本身将添加对业务层项目的引用,而业务层项目又将添加对DAL的引用。这样,您就可以保持三层体系结构:

    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个文件夹组成:
    模型
    视图
    Controllers
    但通常放在
    Models
    文件夹中的所有内容实际上都是您的业务对象,因此我倾向于完全删除该文件夹,只剩下
    视图
    Controllers
    文件夹。视图基本上就是html标记。控制器类只需从业务层调用方法,并将结果传递给视图。例如,UserController类将如下所示:

    public class UserController : Controller 
    {
            public ActionResult Index()
            {
                var allUsers = UserBusLayer.User.GetAll();
                return View(allUsers);
            }
    }
    
    在JSP框架中,我习惯于创建DAO来查询sql表 在ASP.net中,情况似乎并非如此

    这是非常相似的,您应该有一个单独的DAL项目和DAO对象,并引用来自业务层的DAL项目(另一个单独的项目)。ASP.NET MVC项目本身将添加对业务层项目的引用,而业务层项目又将添加对DAL的引用。这样,您就可以保持三层体系结构:

    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个文件夹组成:
    模型
    视图
    Controllers
    但通常放在
    Models
    文件夹中的所有内容实际上都是您的业务对象,因此我倾向于完全删除该文件夹,只剩下
    视图
    Controllers
    文件夹。视图基本上就是html标记。控制器类只需从业务层调用方法,并将结果传递给视图。例如,UserController类将如下所示:

    public class UserController : Controller 
    {
            public ActionResult Index()
            {
                var allUsers = UserBusLayer.User.GetAll();
                return View(allUsers);
            }
    }
    

    您可以使用
    SQLDataAdapter
    并执行自定义查询。有几种方法可以做到这一点。请阅读并开始。您可以使用
    SQLDataAdapter
    执行自定义查询。有几种方法可以做到这一点。请阅读并开始。如果删除此文件夹,是否没有表示数据的类?例如,在DAL中,是否使用sql查询手动创建表?@de1337ed如果使用实体框架,则编写的LINQ查询将返回
    IEnumerable
    (集合),其中
    T
    是一个POCO对象,其属性与您在LINQ查询中定义的属性完全相同。例如,DAL中的这段代码:
    var query=from c in db.Users,其中c.ZipCode==1234选择c
    将向业务层返回一个
    IEnumerable
    ,业务层从DAL获取此集合并将其映射到业务对象。我使用AutoMapper轻松地将DAL对象映射到BO对象@最后,ASP.NET MVC项目看到的只是BL中的业务对象,而不是BL返回的对象