EF 4.1代码首先导致奇怪的(登录)运行时错误

Sav*_*dis 7 ef-code-first entity-framework-4.1

我先使用EF 4.1代码.遇到一种非常奇怪的情况:数据库不存在,代码被执行,并且一旦代码想要对存储库执行查询(使用存储库模式)

MyRepsitory.Get(whereClause)
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

无法打开登录请求的数据库"MyDatabase".登录失败.用户'sa'登录失败.

好!所以我试图找到它是由什么造成的,并做了以下操作:在导致错误的行上设置一个断点,并且一旦该行被命中,我从调试(监视)窗口发出另一个针对存储库的查询

MyRepository.GetAll();
Run Code Online (Sandbox Code Playgroud)

et voila数据库被创建.所以我想:为什么不欺骗数据库(作为解决方法)并针对存储库发出此请求?结果:一旦在代码中执行,我就会得到相同的错误!

我究竟做错了什么?这曾经像魅力一样工作!

编辑 这让我很生气!我将模型和一些代码(用于存储库模式)分离到一个新项目中.试图执行相同的代码,它适用于这个新项目.怎么可能?

查看SQL Serv2008 Exp的日志,我看到以下错误/事件:

启动数据库'MyDatabase'

将数据库选项SINGLE_USER设置为ON以用于数据库MyDatabase.

错误:18456,严重性:14,状态:38.

用户'sa'登录失败.原因:无法打开显式指定的数据库.[客户:]

小智 9

感谢Savvas,分享创建新解决方案解决问题的事实.我遇到了与EF 4.1相同的奇怪问题,删除VS2010"SUO"文件似乎对我有用.我想我会分享这个,以节省其他人从头开始重新创建解决方案的时间.


Sav*_*dis 1

为了将来的使用:事实证明 EF 4.1 不是我问题的根源!

正如我上面所说(编辑后),可以在新项目中运行(未更改的)代码,它将按预期执行!

确实,我成功创建了一个新项目,引用了原始项目的模型和 DAL(存储库等),并且新项目中的新代码按预期执行。

这让我认为这是一个基于 Visual Studio 2010 解决方案(或项目)的问题。我不记得对此解决方案做过任何奇怪的事情(我做的唯一一件事是添加一个测试项目,后来我删除了它,还有一些 - 我认为是三个文件 - 与这个项目测试项目相关 - 这很奇怪吗?! )。

我能想到的唯一解决方案是从头开始创建一个新的 Visual Studio 2010 解决方案并将原始项目放入解决方案树中......并且它有效!