【问题标题】:linq to sql, why to use it in MVC instead of traditional queries?linq to sql,为什么要在 MVC 中使用它而不是传统查询?
【发布时间】:2013-12-25 10:45:52
【问题描述】:

是否有必要在 MVC 中将 LINQ 用于 sql 目的?我们不能使用传统的查询,例如:

Select name from tbl where id = 2;

而不是 LINQ ?以及为什么要使用 linq?

【问题讨论】:

  • 您是否知道您将不得不对那个查询一些事情?字符串本身不会从数据库中检索数据。
  • 只是一个例子,是的,我知道我错过了其中的 id
  • id 不是我的意思。我的意思是你将不得不通过 SqlDataReader 或其他东西来运行它。
  • 示例先生只是示例
  • 任何 ORM(对象关系映射器)的主要好处是您可以返回 正确的 .NET 对象,您可以使用 - CustomerList<Customer> - 而不是原始 ADO.NET 查询中的无类型、难以处理、混乱的行和列。 ORM 可以为您完成许多无趣、无聊的映射工作 - 但是,嘿 - 如果您想要编写更多无聊的从左到右赋值代码 - 请随意继续这样做!没有人强迫你使用 ORM ....

标签: sql asp.net-mvc linq


【解决方案1】:

ASP.NET MVC 绝不会限制您对数据访问技术的选择。事实上,模型绑定适用于对象,而 MVC 不知道您的对象是否代表某个数据库。

此外,如果您要使用 LINQ,则最好使用实体框架(也称为 LINQ to Entities)而不是 LINQ to SQL,后者的限制要大得多。

【讨论】:

    【解决方案2】:

    Linq to SQL、EntityFramework、nHibernate - 是 ORM(对象关系映射)工具。 ORM 将数据库对象表示为标准 .NET 类。

    当您插入大量数据并且需要良好的性能时,可以使用原始 SQL。在所有其他情况下,您应该使用 ORM。

    如果你决定使用 ORM,我建议你使用 EntityFramework;它比 LINQ to SQL 更强大。

    【讨论】:

      【解决方案3】:

      您根本不需要使用 linq。我通常将 dapper.net 用于我的数据层,将 SQL 查询映射到对象。这是个人喜好。

      【讨论】:

      • 好的,所以在 MVC 的模型层,我可以使用简单的选择查询等吗?控制器可以访问它们以获取视图部分吗?
      • 最简单的方法是查询控制器中的数据库。将查询结果映射到模型并将模型返回到视图。显示模型中保存的数据的视图。就个人而言,我通常会将数据访问推送到存储库层(类项目),控制器可以通过存储库查询数据库。如果项目很复杂,我可能在控制器和存储库层之间有一个业务层。这使得控制器干净且重量轻,业务逻辑在业务层中执行。
      【解决方案4】:

      没有义务使用实体框架,因为您没有义务特别使用任何东西。

      Microsoft 强烈建议使用Entities Framework,因为它是一个ORM,可以很容易地与整个Microsoft 生态系统集成,使用集成在.NET 语言规范中的LINQ query language。这种集成是通过 Linq to Entities query language 和 Visual Studio 中提供的相应工具实现的。

      正如您将看到的,实体框架(与其他所有 ORM 一样)具有学习开销,但在我看来,它完全可以为您带来回报,因为使用 ORM 会导致更快的开发和更可维护的源代码。我强烈建议使用 ORM(它有很多 advantages),我想既然您已经熟悉 Microsoft 生态系统,实体框架将是最佳选择。

      希望我能帮上忙!

      【讨论】:

        【解决方案5】:

        好吧,如果你想使用这种风格的查询你可以使用存储过程这是接近正常的查询,只需将一个Linq-to-SQL文件拖入你的项目中并放下你存储过程然后你可以像方法一样使用它们,这是一个链接http://msdn.microsoft.com/en-us/library/bb386946.aspx

        请注意 Linq-to-SQL 仅与 SQL Server 集成

        【讨论】:

        • 我也觉得更适合MVC
        • 你觉得为什么更合适?
        • 因为 MVC 中的编程方式比 ADO 更适合 LinQ ...至少对我来说很好
        • @AyaMohammad:那么这与 LINQ to SQL 有什么关系?老实说,任何其他 ORM 都会比 LINQ to SQL 更好。
        • @jhonSaunders 你的经验肯定比我好,但正如我在第二条评论中所说的“至少对我来说”,我的意思是从我的角度和我在 ADO 和 LinqtoSql 之间的经验,我我发现 LinQ 适合我,也能满足我的需求
        【解决方案6】:

        不,您根本不必使用 LINQ 或任何其他 ORM 框架,您可以直接针对数据库工作。

        在 .Net 中,这通常使用 ADO.Net 完成,例如使用 System.Data.SQL 命名空间。 见代码示例和官方文档here

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-06
          • 1970-01-01
          • 2012-07-30
          • 1970-01-01
          相关资源
          最近更新 更多