EntityFramework返回空结果而没有错误

时间:2014-11-09 00:58:57

标签: asp.net-mvc entity-framework iis

我正在学习ASP MVC5和EntityFramework似乎“默默崩溃”(我知道我应该受到责备)。

我从模板中启动了一个新项目,并将一个表[People]添加到链接到webconfig中默认连接字符串的模板数据库中:

<add name="DefaultConnection" 
     connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-WorstPeople.WebUI-20141007014802.mdf;Initial 
     Catalog=aspnet-WorstPeople.WebUI-20141108014803;Integrated Security=True" providerName="System.Data.SqlClient" />

然后我添加了一个新的域类库项目,其中包含一个存储库模式? (还在学习)。我有Ninject和Moq。

我的视图列出了我数据库中的每个人(例如:return View(repository.People);)。如果我将Mock存储库绑定到DI,则视图可以正常工作。但是,如果我将它绑定到我的EntityFramework上下文,它将返回一个空列表而不是错误(并且我的数据库有数据)。

问题:

  1. 当EntityFramework(或其他东西)无法连接到我的[People]表时,它不应该出错吗?

  2. 附加.mdf文件是否会阻止IIS启动并且EntityFramework无法正常工作?

  3. 作为MVC5创建的项目模板的一部分,是否有一个启动IIS的“数据库”,或者它只是一个数据库文件?我对IIS或数据库知之甚少。

  4. 出于好奇:将您的域存储在与用户相同的数据库中是不是很糟糕?我正在尝试只有一个数据库,但我想知道。

  5. 编辑:

    1. 我是否需要使用连接字符串进行更改以使其与EF和数据库一起使用,或者我只是在某处无法找到无声错误?
    2. 我注意到,如果我将类名修改为Person2,我会得到相同的空结果,这让我想到“如果无法理解它在哪里就会发现错误”

2 个答案:

答案 0 :(得分:1)

  1. 应该
  2. 没有
  3. 如果是localdb(我可以看到),你可能有一个db文件,它位于你的项目文件夹中
  4. 我一直这样做。如果没有关于安全性的特殊要求,并且它是普通网站,我认为没有任何理由不使用1 db用于域和其他数据。

答案 1 :(得分:0)

我发现将Connection的名称从“DefaultConnection”更改为“EFDbContext”,这与我派生的DbContext对象相同,解决了这个问题。

我猜测实体框架的工作方式是使用同名的连接名称连接派生的DbContext对象。

我是否应该就此问题考虑进一步的见解或提示?