【问题标题】:Best practices for database comunication layer for SQL Server and .NETSQL Server 和 .NET 数据库通信层的最佳实践
【发布时间】:2023-04-08 21:15:01
【问题描述】:

我被要求在几个小时内实现一个必须访问 SQL Server 数据库的新 ASP.NET 应用程序。

我想知道访问数据库的最佳(和最快)方法是什么,一个好的做法是创建一个数据访问层,但是您将如何创建它呢?

  1. 使用 ADO.NET 并创建一个方法 runQuery(query,parameters),而不是为每个查询创建一个方法,例如:

    getRowByID(id){
       runQuery("SELECT..",id);
    }
    
    getRowsByDate(date){
       runQuery("SELECT..",date);
    }
    
  2. 使用 Visual Studio 中的内置向导? (可怕的解决方案,但非常快)

  3. 使用诸如 nHibernate、Linq 或...之类的东西?

我个人会选择第一种不太复杂的方法,我不喜欢自动生成的代码,所以我会放弃第二种,也许是第三种??

如果你有任何有效的例子,请告诉我你的想法。

谢谢

【问题讨论】:

  • EF 应该非常快速和简单
  • IMO 归结为您对 3 个选项中的每一个都有多少经验。
  • 我只会使用选项#3 - 在您的代码中为您提供一个很好的基于对象的编程接口,并将所有血腥细节留给 ORM。 #1 非常糟糕一种方法可以解决所有问题),我不确定您所说的#2 是什么意思 ....
  • 如果您不想要任何生成的代码(为什么...),并且您对直接的 SQL 语句感到满意,请查看 @987654321 @ - 使用的微 ORM,例如在这个网站上。非常简单,非常快速,非常通用 - 使用直接 SQL 语句,没有可视化模型设计器或任何其他......
  • @marc_s 我同意你关于#3,关于#2:我的意思是这样的VS Wizard。但是为什么你认为#1 不好呢?将有一种方法可以处理与数据库的实际通信以及使用它传递正确的查询字符串和参数的其他方法......它对我来说看起来很干净(它基于这个函数ADO.NET,但将部分与从实际连接到数据库的代码中查询字符串...(感谢您的帮助)

标签: .net sql-server nhibernate ado.net data-access-layer


【解决方案1】:

我总是喜欢存储过程。它们快速且易于测试,参数化值很容易插入,如果出现问题,直接执行 SP 很容易测试。以后也很容易进行更改,以及使用默认的空参数等。你主要/只做 SELECT 查询吗?

【讨论】:

    【解决方案2】:

    执行选项 3 并使用 BLToolkit,这是一个链接 -> http://www.bltoolkit.net/Doc.Linq.ashx 只需查看演示项目

    如果你想有一个简单的抽象选择BLToolkit,当然不是EF

    【讨论】:

      【解决方案3】:

      getRowByID(id){ getRowsByDate(日期){

      两条线来解雇你。使用 ORM。使用支持 LINQ 的东西。如果您想要快速轻量级的东西,请使用 BLToolkit。

      2.使用 Visual Studio 中的内置向导

      再次开枪。

      3.使用 nHibernate、Linq 或...之类的东西?

      没错。

      【讨论】:

      • 感谢您的帮助。我同意 #3 是最好的方法,但我不明白为什么 #1 如此错误......?谢谢
      • 因为对于 osmoene 可能需要编写的每个可能的查询,您最终都会使用 mre 和 mor 方法。这是一种反模式——随着时间的推移,它变成了一种不可维护的野兽。
      【解决方案4】:

      如果我需要快速完成使用数据库的应用程序 - 我使用 Linq to Sql。它只是简单而干净。

      【讨论】:

        【解决方案5】:

        所以,正如@TomTom 所说,使用像实体框架和 LINQ 这样的 ORM 是访问数据库的一种非常快速的方式,并且它让您的应用程序非常灵活,因为您可以轻松更改后台数据库而无需更改一行在数据访问层中(您只需将提供者更改为正确的提供者)。

        当然,使用 ORM 意味着您会以某种方式获得自动生成的代码,而且它肯定不会像您手动编写代码那样快。但这仍然是迄今为止您发现的有关 Microsoft 提供的数据访问的最快解决方案。

        【讨论】:

          【解决方案6】:

          我更喜欢使用 EF 或 Linq to SQL。快速和第一。而且我不需要在代码中编写 SQL 语句。因为它是语言集成查询(LINQ)的对象之一。我也喜欢 Visual Studio 的 Intelliense 在 LINQ 中显示表名、列名,它也减少了我的调试时间。

          【讨论】:

            猜你喜欢
            • 2010-12-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-09-17
            • 2010-09-05
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多