ozc*_*cho 6 nunit entity-framework sql-server-ce-4
尝试首先使用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);
}
Run Code Online (Sandbox Code Playgroud)
问题是System.Data.Entity.Database.SetInitializer在第一次测试后没有调用MyTestContextInitializer.
因此第二次测试失败了:
System.Data.EntityException:基础提供程序在Open上失败.
----> System.Data.SqlServerCe.SqlCeException:找不到数据库文件.检查数据库的路径
TIA任何指针
我通过手动调用'InitializeDatabase'解决了这个问题.像这样:
[SetUp]
public void Init()
{
var initializer = new MyTestContextInitializer();
System.Data.Entity.Database.SetInitializer(initializer);
_dbContext = ContainerFactory.Container.GetInstance<IContext>();
initializer.InitializeDatabase((MyTestContext)_dbContext);
_testConnection = _dbContext.ConnectionString;
}
[TearDown]
public void Cleanup()
{
System.Data.Entity.Database.Delete(_testConnection);
_dbContext.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
我认为这可能是EF 4.1 RC的一个错误.
| 归档时间: |
|
| 查看次数: |
4761 次 |
| 最近记录: |