【问题标题】:Making many SqlConnections in webforms在 web 表单中创建许多 SqlConnections
【发布时间】:2018-12-22 22:51:29
【问题描述】:

因为我必须不断进行数据库调用以获取数据以显示在转发器和模式中,所以我必须像这样在每个页面中多次重复代码,而且看起来很脏

using(SqlConnection con = new SqlConnection(conStr))
{ 
      using(SqlCommand cmd = new SqlCommand(query,con))
      {
          con.Open();
          cmd.ExecuteNonQuery(),
          // End
       }
}

对于插入、更新或获取数据表...随着项目的发展,当异常发生时,跟踪每个连接变得非常困难,而且在代码后面的每个页面中都有很多这样的连接,以至于代码变得很脏,并且看着就疼。

我的问题...有没有更有效的方法来获取数据库调用?我一直在阅读有关实体框架的内容,并且已经在 microsoft docs 上尝试了整个教程,看起来非常漂亮和整洁,而且很容易找到东西,但是当有很多表时似乎很难实现,因为每当需要更改数据库时都必须更新代码并进行迁移,反之亦然,因此不仅要更新数据库,还必须同时进行。

还有另一个问题,如果我从不关闭 using 语句的连接,因为它们关闭了它,这可以吗?我想我避免只是为了不让程序浪费资源调用一个额外的函数来做同样的事情,或者如果我在执行命令后关闭连接有什么区别?

【问题讨论】:

  • 您可以通过无数种方式将代码排列到类和方法中。您要解决的具体问题是什么?如果您有一个包含大量代码的单一表单,那么您应该重构为更小且更易于管理的对象。这与您的数据库代码无关,而与您一般如何组织代码有关。
  • 你的意思是我应该为我必须经常使用的东西创建类,例如,一个使用 GetAllRequisitions 等方法从数据库中获取数据的申请类?
  • 一般来说,是的。理想情况下,您会在简单方法后面抽象出诸如数据库连接之类的东西。没有一条建议可以涵盖组织代码的无穷无尽的方式。虽然听起来你可能会从重构模式中得到一些用处:refactoring.com
  • 关于Close,让using 为您处理这一切都很好。
  • 你的问题描述太模糊了。什么是“一直”?什么是“多数据”,为什么实体框架会“难以实现”?如果代码需要在多个位置运行,为什么要重复代码?此外,每个帖子坚持一个问题。顺便说一下,第二个问题同样含糊不清。关闭连接的想法不是浪费(泄漏)资源。

标签: c# sql-server entity-framework webforms


【解决方案1】:

从 cmets 来看,我认为符合我需求的选项只是继续使用 ADO.NET,并使用获取数据的方法创建类并使用数据注释进行验证,而不是实施实体框架 ORM,这在资源方面有点昂贵。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多