创建和使用 ODP.NET 连接的最佳方式
Optimal way to create and use ODP.NET connection
我正在尝试了解创建和使用与 ODP.NET 的连接的最有效且可维护的方法。
我在 VB.NET 中编写使用 ODP.NET 的函数的标准方法是这样的:
Function GetDataTable() As DataTable
Using Connection = New OracleConnection(connectionStringNHH)
Using Command As OracleCommand = Connection.CreateCommand()
Using DataAdapter As New OracleDataAdapter()
'Do stuff, fill dt
End Using
End Using
End Using
Return dt
End Function
但是,根据 Oracle 文档:
logging in and out of the database is an extremely resource-intensive operation [1]
每次调用此函数时,连接对象的创建和处理是否登录和退出数据库,或者会话是否以某种方式在整个应用程序范围内持续存在?
如果不是,我是否应该通过我的应用程序使用 public 连接对象?出于多种原因,这对我来说似乎是不好的做法。
默认情况下,您会在 OracleConnection 中获得一个连接池。连接生命周期和与数据库打开的相应会话将由池控制。有关所有详细信息,请参阅 ODP.NET 文档。
最佳做法是确保关闭并处置这些连接和其他 oracle 对象。
下面是一个应该有所帮助的最佳实践幻灯片:
https://www.oracle.com/technetwork/topics/dotnet/tech-info/oow18dotnetperfbp-5212811.pdf
我正在尝试了解创建和使用与 ODP.NET 的连接的最有效且可维护的方法。
我在 VB.NET 中编写使用 ODP.NET 的函数的标准方法是这样的:
Function GetDataTable() As DataTable
Using Connection = New OracleConnection(connectionStringNHH)
Using Command As OracleCommand = Connection.CreateCommand()
Using DataAdapter As New OracleDataAdapter()
'Do stuff, fill dt
End Using
End Using
End Using
Return dt
End Function
但是,根据 Oracle 文档:
logging in and out of the database is an extremely resource-intensive operation [1]
每次调用此函数时,连接对象的创建和处理是否登录和退出数据库,或者会话是否以某种方式在整个应用程序范围内持续存在?
如果不是,我是否应该通过我的应用程序使用 public 连接对象?出于多种原因,这对我来说似乎是不好的做法。
默认情况下,您会在 OracleConnection 中获得一个连接池。连接生命周期和与数据库打开的相应会话将由池控制。有关所有详细信息,请参阅 ODP.NET 文档。
最佳做法是确保关闭并处置这些连接和其他 oracle 对象。
下面是一个应该有所帮助的最佳实践幻灯片:
https://www.oracle.com/technetwork/topics/dotnet/tech-info/oow18dotnetperfbp-5212811.pdf