【问题标题】:How to connect to Database in C# web application如何在 C# Web 应用程序中连接到数据库
【发布时间】:2011-07-06 06:06:45
【问题描述】:

我过去四年一直在使用 C++,突然间我被分配了一个任务来开发一个示例 Web 应用程序,其目的是从示例表中获取数据并在网格视图中显示它。

关于示例应用程序:

该应用程序是在 Visual web Developer 2010 中在 Framework 4.0 下开发的,使用 ASP.net 和 C#。 后端数据库使用MS SQL Server 2008开发

我的方法:

因为,我是 .net 世界的新手。所以我上网冲浪并找到了类型化的数据集(最简单的方法,即使用向导而不是编码),因此我使用类型数据集进行数据库连接。

我的问题:

我因使用类型化数据集而面临很多批评:(。有人说它效率不高,有人说它更难扩展……等等:( 现在我只想问什么是建立数据库连接的最佳方式(特别是对于大型项目)。我只是问这个,因为我是这个领域的新手。但是我从互联网上学习并通过编码找到了另一种方式,即每个事物都存在类(DataSet、DataTable、DataRow、Connection 等)。这是更好的方法吗?或者还有其他东西。 一些示例代码或指导如何执行此操作的网络资源会更有帮助

【问题讨论】:

    标签: c# asp.net sql-server database


    【解决方案1】:

    我会看看微软的 ORM(对象关系映射)工具,称为实体框架。 您几乎可以将一个新的实体框架模型添加到您的项目中,然后您可以选择您想要的所有表和存储过程,这样您就可以通过对象而不是数据集来访问您的数据。

    如今,数据集在新项目中的使用并不多,因为它们很难在后期进行更改,并且需要进行许多更改,而人们一直告诉您的关于它们的说法是正确的非常可扩展。

    查看下面的实体框架链接。

    Entity Framework Tutorial

    【讨论】:

    • 您说的是真的,使用实体框架可以轻松开发。但有时,速度也需要考虑。在这些情况下,我会像@domanokz 提到的那样退回到SqlDataReader。仍然 +1
    • @Alex R - 你说得对,实体框架可能是一个过程,而 SqlDataReader 很容易实现。我猜当您考虑新世界应用程序开发时,如果您在 UI 想要快速更新/删除数据时使用 INotifyPropertyChanged 接口,那么数据集的使用已被具有新绑定功能的其他技术所取代。
    【解决方案2】:

    您可以使用 SqlDataReader,它是在 .NET 中检索数据的最快方式。

    //ensures the SQLconnection will be closed...
    using (SqlConnection connection =
               new SqlConnection(connectionString))
    {
        SqlCommand command =
            new SqlCommand("select * from MyTable", connection);
        connection.Open();
    
        SqlDataReader reader = command.ExecuteReader();
    
        // Reads data
        while (reader.Read())
        {
            Response.Write(String.Format("{0}, {1}",
                reader[0], reader[1]));
        }
    
        // Close dataReader after use...
        reader.Close();
    }
    

    【讨论】:

    • 您可能还需要考虑为SqlDataReader 使用using () {...},因为它也实现了IDisposable
    【解决方案3】:

    我建议您阅读这些文章,因为它们描述了 ASP.NET 中数据访问的最佳实践。

    http://msdn.microsoft.com/en-us/library/ms971481.aspx

    http://msdn.microsoft.com/en-us/library/ee817654.aspx

    DataSet、DataTable 或 SqlDataReader 的使用,都取决于你的情况。 您需要分析哪种最适合您的情况。

    【讨论】:

      【解决方案4】:

      你可以看看this

      它还有其他方法,如 LINQ TO SQL、EF

      【讨论】:

        【解决方案5】:

        如果您选择类型化的数据集,您可能会坚持使用一种技术。由于数据集和它们的表通常会被传递到业务逻辑和客户端,而不仅仅是数据访问层,因此很难遵循关注点分离。

        因此,如果您在应用程序中选择类型化的数据集,那么可扩展性肯定是一个问题,因为更换这些技术并不是那么简单,因为它通常是跨层实现的

        其他人发誓改用 NHibernate 之类的技术,这非常好。

        但是,如果它只是一个示例应用程序,您可以使用类型化数据集免费获得很多。继续实施它,除非这应该是一个打算扩展的寿命更长的应用程序

        【讨论】:

          【解决方案6】:

          可能是Data Abstract 对你来说可能是个好方法

          【讨论】:

            猜你喜欢
            • 2012-07-28
            • 1970-01-01
            • 2014-07-27
            • 2021-12-16
            • 2014-11-26
            • 2016-09-27
            • 1970-01-01
            • 2023-04-09
            • 1970-01-01
            相关资源
            最近更新 更多