Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 5 使用windows服务作为ef客户端进行数据库连接时出现问题_Entity Framework 5 - Fatal编程技术网

Entity framework 5 使用windows服务作为ef客户端进行数据库连接时出现问题

Entity framework 5 使用windows服务作为ef客户端进行数据库连接时出现问题,entity-framework-5,Entity Framework 5,我是新来的实体框架,参加了一个速成班后,我的雇主决定先使用ef 5,代码 我已经将dbcontext派生以及程序集中的存储库和连接字符串单独分开。其思想是创建一个可跨项目重用的程序集 数据库程序集中的连接字符串如下所示: <add name="LmsDb" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=LmsDb;Integrated Security=SSPI;AttachDBFilename=|DataDir

我是新来的
实体框架
,参加了一个速成班后,我的雇主决定先使用ef 5,代码

我已经将dbcontext派生以及程序集中的存储库和连接字符串单独分开。其思想是创建一个可跨项目重用的程序集

数据库程序集中的连接字符串如下所示:

<add name="LmsDb" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=LmsDb;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\LmsDb.mdf;;MultipleActiveResultSets=true" providerName="System.Data.SqlClient" />
<add name="LmsDb" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=LmsDb;Integrated Security=SSPI;MultipleActiveResultSets=true" providerName="System.Data.SqlClient" />

使用数据库项目(客户端)的程序集上的连接字符串如下所示:

<add name="LmsDb" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=LmsDb;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\LmsDb.mdf;;MultipleActiveResultSets=true" providerName="System.Data.SqlClient" />
<add name="LmsDb" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=LmsDb;Integrated Security=SSPI;MultipleActiveResultSets=true" providerName="System.Data.SqlClient" />

我已经创建了一个MVC项目,它可以很好地处理这个连接字符串,我的所有集成测试都可以很好地处理这个连接字符串

当我必须创建某种调度程序逻辑,以可配置的时间间隔遍历数据库,并根据数据库中的数据执行某些操作时,出现了问题。我决定通过创建一个简单的Windows服务来测试这一点,该服务带有一个计时器,可以为一些查询执行EF5代码

计时器设置为每分钟执行一次全选查询,但当发生这种情况时,我的查询不会返回任何结果,尽管我知道数据库中有数据

当我查看
DbContext.Connection.State
时,它被设置为Closed

我做错了什么

Julie Lerman说,我尝试使用
((ObjectContextAdapter)my context.ObjectContext.connection.Open()
显式打开连接


但这似乎没有任何帮助。

这个问题得到了解决。请看我的评论。

没关系,我发现了问题。因为默认情况下我使用的是LocalDB,所以这对我的数据设置了一些限制。LocalDb应该作为开发人员的沙箱工作,默认情况下,所有者以外的其他用户不应该访问它。我的windows服务是以LocalSystem运行的,将其更改为我的用户帐户使整个工作正常。但是没有抛出异常。。