2009-08-15 132 views
27

当我在实体框架中实例化我的“实体”对象,并使用该实体对象进行一些查询时,连接会发生什么?实体框架何时打开和关闭数据库连接?

  • 当我实例化对象时是否打开连接,并在处理它时关闭它?
  • 或者它打开和关闭我执行的每个单个查询的连接?

在任何一种情况下,是否可以改变它,以便它可以做到另一件事?

+2

哇@ pb2q这是一个非常重要的编辑6年的老问题!做得很好! – 2015-09-05 21:14:01

+0

dMagiola:没问题。乐于帮助进行任何改进:重要的或其他的,旧的或新的。继续问好友! – pb2q 2015-09-08 03:56:52

回答

3

EF6中的行为有所改变,允许您传递打开的连接或稍后自行打开EF连接。退房https://msdn.microsoft.com/en-us/library/dn456849(v=vs.113).aspx

+0

非常感谢链接 - 是否没有办法通过c#的''using'子句声明一个开放连接?例如'使用(var conn = openAConnection())'。您分享的链接显示手动打开连接,当相关的上下文被处理时这些连接会被关闭,这看起来很不直观,而且非常黑客。 – aaaaaa 2017-09-20 02:15:24

+0

@aaaaaa - 也许你在看EF5和前面的例子?在第二个代码示例中,像你想要的那样使用''using'子句。请注意,如果您真的想用连接手动执行某些操作,您只需要担心这一点,例如在EF之外执行语句。如果你不需要,那么你根本不需要考虑打开和关闭连接。 – Rory 2017-09-20 22:47:11

+0

“ES6和未来版本中的行为”:'conn.Open();'。这是令我烦恼的线路。是的,我需要它显然是从存储过程中获得多个结果集(试图保持db请求每个视图一个) – aaaaaa 2017-09-20 23:57:32