DbContext.Database.EnsureCreated()
DbContext.Database.EnsureCreated()
我正在研究 packtpub 的 entity framework 单元测试核心食谱,有一个例子(我做了一些修改)
[Fact]
public void CanCreateDatabase()
{
var blogContext = new BlogContext(_builder.Options);
var created = blogContext.Database.EnsureCreated();
Assert.True(created);
}
[Fact]
public void CanRetrieveRecord()
{
var blogContext = new BlogContext(_builder.Options);
var blog1 = blogContext.Blogs.FirstOrDefault();
Assert.Contains("Development", blog1.Name);
}
第一次测试失败,第二次通过。我很确定数据库已经创建,这就是为什么第二个测试通过,但为什么第一个测试失败?
基于 EnsureCreated
here
的文档
Returns
System.Boolean
True if the database is created, false if it already existed.
在上述测试中,假设不存在数据库,对于第一个测试 运行,EnsureCreated
将创建数据库并通过测试。但是对于任何后续 运行,数据库已经存在,因此 EnsureCreated
returns 错误。也许您想在 EnsureCreated
之前使用 EnsureDeleted
以确保删除数据库,以便您可以测试其实际创建情况。
我正在研究 packtpub 的 entity framework 单元测试核心食谱,有一个例子(我做了一些修改)
[Fact]
public void CanCreateDatabase()
{
var blogContext = new BlogContext(_builder.Options);
var created = blogContext.Database.EnsureCreated();
Assert.True(created);
}
[Fact]
public void CanRetrieveRecord()
{
var blogContext = new BlogContext(_builder.Options);
var blog1 = blogContext.Blogs.FirstOrDefault();
Assert.Contains("Development", blog1.Name);
}
第一次测试失败,第二次通过。我很确定数据库已经创建,这就是为什么第二个测试通过,但为什么第一个测试失败?
基于 EnsureCreated
here
Returns
System.Boolean
True if the database is created, false if it already existed.
在上述测试中,假设不存在数据库,对于第一个测试 运行,EnsureCreated
将创建数据库并通过测试。但是对于任何后续 运行,数据库已经存在,因此 EnsureCreated
returns 错误。也许您想在 EnsureCreated
之前使用 EnsureDeleted
以确保删除数据库,以便您可以测试其实际创建情况。