0

我需要知道数据库连接(通过 WCF RIA + EF)何时打开,何时关闭。但是在我的 DomainService ( 在 web 端) 方法中:

return this.ObjectContext.Connection.State.ToString();

总是返回“关闭”。哪怕刚才是成功的反应。连接确实在第一次请求后打开,并在超时后自动关闭(在 web.config 中配置),因为在 WFC RIA 中我不调用“打开-”和“关闭连接”命令。但主要问题 - 如果连接超时,DomainContext 不会告诉客户端这件事。

因此,如果连接超时并且用户尝试向数据库发出请求 - 他将得到一个异常(实际上是访问异常),那么,DomainContext隐藏地自动恢复连接,并且用户可以在第二次请求后得到答案(所有超时后)。

这就是为什么我需要知道 - 连接状态何时关闭,何时打开。

我只想做一个可以实时显示真实连接状态的指示器。

第二个不太重要的问题 - 我是否需要创建一个静态 DomainContext 对象来隐含任何数据库操作(包括登录、注销、GetQuerriess 等)?可以吗?几乎为每组操作获取新的 DomainContext 实例?希望,你明白我的想法。

4

1 回答 1

0

对于 Ado.NET,您可以管理连接,我们说“连接池” http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx

EntityFramework 也使用 ADO.NET,但 IIS 服务器为我们管理、优化的连接池。

多年来,我从未遇到过这样的连接关闭错误。如果你给我们更多的细节,也许它会很清楚。通常 20 秒后,Web 会话就会死机。它会是一个丢失的会话吗?

我们将 DomainService 类用于 RIA 服务。(正如我在您编写的 RIA 问题中看到的那样)DomainService 类具有 ObjectContext 的 EntityModel(EDMX)。因此,您可以通过this.ObjectContext在您的域服务方法中访问它们。如果您有一个 EDMX,您将不需要另一个 ObjectContext 实例。您可能只需要不同的域服务类实例。

于 2013-02-25T06:57:59.617 回答