SQL Server和.NET数据库通信层的最佳实践

SQL Server和.NET数据库通信层的最佳实践,.net,sql-server,nhibernate,ado.net,data-access-layer,.net,Sql Server,Nhibernate,Ado.net,Data Access Layer,我被要求在几个小时内实现一个新的ASP.NET应用程序,该应用程序必须访问SQL Server数据库 我想知道访问数据库的最佳(和最快)方法是什么,一个好的做法是创建一个数据访问层,但您将如何创建它 使用ADO.NET并创建一个方法运行查询(查询,参数),而不是为每个查询创建一个方法,如: getRowByID(id){ runQuery("SELECT..",id); } getRowsByDate(date){ runQuery("SELECT..",date); } 在V

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

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

  • 使用ADO.NET并创建一个方法
    运行查询(查询,参数)
    ,而不是为每个查询创建一个方法,如:

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

  • 使用nHibernate、Linq或

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

    让我知道你的想法,如果你有任何有效的例子

    多谢各位

    getRowByID(id){ getRowsByDate(日期){

    有两行可以解雇你。使用ORM。使用支持LINQ的东西。如果你想要快速轻量级的东西,请使用BLToolkit

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

    又开枪了

    3.使用nHibernate、Linq或

    没错

    getRowByID(id){ getRowsByDate(日期){

    有两行可以解雇你。使用ORM。使用支持LINQ的东西。如果你想要快速轻量级的东西,请使用BLToolkit

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

    又开枪了

    3.使用nHibernate、Linq或


    没错。

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

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

    如果我需要执行使用数据库的应用程序快速—我使用Linq to Sql。它简单明了。

    如果我需要快速开发使用数据库的应用程序,我使用Linq to Sql。它简单明了。

    因此,正如@TomTom所说,使用类似ORM的实体框架加上Linq是访问数据库的一种非常快速的方式,它让您的应用程序非常灵活,您可以轻松地更改后台数据库,而无需更改数据访问层中的一行(只需将提供程序更改为正确的提供程序)


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

    因此,正如@TomTom所说,使用类似ORM的实体框架加上LINQ是一个非常简单的方法k访问数据库的方式,它使您的应用程序非常灵活,因为您可以轻松地更改后台数据库,而无需更改数据访问层中的一行(您只需将提供程序更改为正确的提供程序)


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

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

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

    执行选项3,只需使用BLToolkit,这里有一个链接-> 只需查看演示项目


    如果您想要一个简单的抽象,请选择BLToolkit,当然不是EF

    执行选项3,只需使用BLToolkit,这里有一个链接-> 只需查看演示项目


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

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