首先尝试使用 EF 4.1 代码进行一些单元测试。我有我的实时数据库(SQL Server)和我的单元测试数据库(Sql CE)。在与 EF、Sql CE 4.0 和事务支持战斗(并失败)之后,我决定运行测试的最简单方法是:
- 创建数据库
- 运行测试
- 删除数据库
- 冲洗并重复
我有我的 [Setup] 和 [TearDown] 功能:
[SetUp]
public void Init()
{
System.Data.Entity.Database.SetInitializer(new MyTestContextInitializer());
_dbContext = ContainerFactory.Container.GetInstance<IContext>();
_testConnection = _dbContext.ConnectionString;
}
[TearDown]
public void Cleanup()
{
_dbContext.Dispose();
System.Data.Entity.Database.Delete(_testConnection);
}
问题是 System.Data.Entity.Database.SetInitializer 在第一次测试后没有调用 MyTestContextInitializer。
因此,第二次测试失败:
System.Data.EntityException :基础提供程序在打开时失败。
----> System.Data.SqlServerCe.SqlCeException : 找不到数据库文件。检查数据库的路径
任何指针的 TIA