我需要知道何时打开数据库连接(通过WCF RIA + EF),何时关闭。但是在我的DomainService(在Web端)方法:
return this.ObjectContext.Connection.State.ToString();
始终返回“已关闭”。即使刚才是成功的回应。连接确实在第一次请求后打开,并在超时后自动关闭(在web.config中配置),因为在WFC RIA中我不调用“open-”和“close connection”命令。但主要问题是 - 如果连接时间过长,则DomainContext不会告诉客户端这一点。
因此,如果连接时间和用户尝试向数据库发出请求 - 他将获得异常(实际上是访问异常),那么,DomainContext 隐藏自动恢复连接,用户可以在第二次请求后(所有超时后)得到答案。
这就是我需要知道的原因 - 当连接状态关闭时,打开时。
我只是想做一个能够实时显示真实连接状态的指标。
第二个不太重要的问题 - 我是否需要创建一个静态DomainContext对象来隐式任何数据库操作(包括Login,Logout,GetQuerriess和et.c.)?好吗?几乎为每组操作获取DomainContext的新实例?希望,你了解我的想法。
答案 0 :(得分:0)
对于Ado.NET,您可以管理连接,我们说“连接池” http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx
EntityFramework也使用ADO.NET,但IIS服务器为我们管理,优化了连接池。
我多年来从未遇到这种连接关闭错误。如果你给我们更多的细节可能会很清楚。一般在20秒之后,网络会话就会死亡。这可能是一场失败的会议吗?
我们对RIA服务使用DomainService类。(正如我在你的问题中看到你写的RIA) DomainService类具有ObjectContext的EntityModel(EDMX)。因此,您可以通过 this.ObjectContext 在域服务方法中与他们联系。如果您有一个EDMX,则不需要ObjectContext的另一个实例。您可能只需要不同的域服务类实例。