Unit testing 单元测试期间的实体框架错误

Unit testing 单元测试期间的实体框架错误,unit-testing,entity-framework,Unit Testing,Entity Framework,我正在使用实体框架 在我的一个单元测试中,我有这样一行代码: this.Set<T>().Add(entity); this.Set().Add(实体); 在执行该行时,我得到: System.InvalidOperationException:支持 “InvoiceNewDataContext”上下文自数据库创建以来已更改 创建。手动删除/更新数据库,或调用 Database.SetInitializer具有IDatabaseInitializer实例。对于 例如,DropCr

我正在使用实体框架

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

this.Set<T>().Add(entity);
this.Set().Add(实体);
在执行该行时,我得到:

System.InvalidOperationException:支持 “InvoiceNewDataContext”上下文自数据库创建以来已更改 创建。手动删除/更新数据库,或调用 Database.SetInitializer具有IDatabaseInitializer实例。对于 例如,DropCreateDatabaseIfModelChanges策略将 自动删除并重新创建数据库,并可以选择为其设定种子 有了新的数据

实际上,我已经删除了数据库并删除了连接字符串

我很惊讶这个错误是在添加时发生的,因为我不希望它发生,直到我保存了数据,它发现没有数据库

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


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

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

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

您是在应用程序启动还是在测试初始值设定方法中使用初始化策略?你所说的删除了连接字符串是什么意思?是的,我使用了一个初始化策略,在测试项目的app.config中有一个连接字符串。我希望测试在没有数据库的情况下运行,因此我删除了此connectionstring并注释掉了初始化策略。您是在应用程序启动中使用初始化策略还是在测试初始化器方法中使用初始化策略?你所说的删除了连接字符串是什么意思?是的,我使用了一个初始化策略,在测试项目的app.config中有一个连接字符串。我希望测试在没有数据库的情况下运行,所以我删除了这个connectionstring并注释掉了初始化策略。目前,我正在将它与在这里找到的示例进行比较,它似乎没有关联的数据库,您可以向上下文添加项,如:context.Save(product);SaveChanges();当你在测试的时候。现在我将它与在这里找到的示例进行比较,它似乎没有关联的数据库,你可以向上下文添加项目,比如:context.Save(product);SaveChanges();当你测试的时候。