【问题标题】:Entity Framework error during unit test单元测试期间的实体框架错误
【发布时间】:2011-09-22 03:32:51
【问题描述】:

我正在使用实体框架。

在我的一个单元测试中,我有这样一行:

this.Set<T>().Add(entity);

在执行该行时,我得到:

System.InvalidOperationException : 模型支持 'InvoiceNewDataContext' 上下文自数据库被更改以来已更改 创建。手动删除/更新数据库,或调用 Database.SetInitializer 与 IDatabaseInitializer 实例。为了 例如,DropCreateDatabaseIfModelChanges 策略将 自动删除并重新创建数据库,并可选择为其播种 使用新数据。

其实我已经删除了数据库并删除了连接字符串。

我很惊讶在添加时会发生此错误,因为在我保存数据并发现没有数据库之前我不希望它发生。

在我之前在单元测试期间创建的项目/解决方案中,我能够添加到上下文中以用于测试目的,而无需实际调用 SaveChanges

有人知道为什么我的最新项目/解决方案会出现这种情况吗?

【问题讨论】:

  • 您是在应用程序启动还是在测试初始化​​方法中使用初始化策略? removed the coonnectionstring 是什么意思?
  • 是的,我正在使用初始化策略,并且在测试项目的 app.config 中有一个连接字符串。我希望测试在没有数据库的情况下运行,所以我删除了这个连接字符串并注释掉了初始化策略。

标签: unit-testing entity-framework


【解决方案1】:

你确定它真的没有在你以前的项目中使用数据库吗?如果您没有指定任何连接字符串,它将默默地使用带有本地 .mdf 文件的 SQLExpress 数据库的默认连接字符串,因此请确保现在没有发生这种情况。

【讨论】:

  • 现在我将它与blogs.clariusconsulting.net/kzu/… 中的示例进行比较,这似乎没有关联的数据库,您可以将项目添加到上下文中,例如: context.Save(product ); context.SaveChanges();测试时。
猜你喜欢
  • 2023-04-09
  • 1970-01-01
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
  • 2017-07-03
  • 2023-03-22
  • 2011-05-28
  • 2014-08-10
相关资源
最近更新 更多