我是新手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 项目,它可以很好地使用它,并且我的所有集成测试都可以很好地使用这个连接字符串。
当我必须创建某种调度程序逻辑以以某些可配置的时间间隔遍历数据库并根据那里的数据执行一些操作时,就会出现问题。我决定通过创建一个带有计时器的简单 Windows 服务来测试这一点,该计时器为某些查询执行 ef 5 代码。
计时器设置为每分钟执行一次全选查询,但是当发生这种情况时,尽管我知道数据库中有数据,但我的查询没有返回任何结果。
当我查看 时DbContext.Connection.State
,它设置为已关闭。
我究竟做错了什么 ?
我尝试((ObjectContextAdapter)my context).ObjectContext.Connection.Open()
根据 Julie Lerman 使用显式打开连接。
这似乎没有任何帮助。