我是Entity Framework
的新手,在一个速成课程后,我的雇主周围的一些游戏决定使用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" />
我已经创建了一个MVC项目,它可以正常工作,我的所有集成测试都适用于这个连接字符串。
当我必须创建某种调度程序逻辑以某些可配置的时间间隔通过数据库并根据那里的数据执行某些操作时,会出现问题。我决定通过创建一个带有Timer的简单Windows服务来测试它,该Timer为某些查询执行ef 5代码。
计时器设置为每分钟执行一次选择所有查询,但是当发生这种情况时,我的查询没有返回结果,尽管我知道数据库中有数据。
当我查看DbContext.Connection.State
时,它设置为已关闭。
我做错了什么?
根据Julie Lerman的说法,我尝试使用((ObjectContextAdapter)my context).ObjectContext.Connection.Open()
显式打开连接。
这似乎没有任何帮助。
答案 0 :(得分:0)
这已经解决了。请看我的评论。