使用内存数据库



我在使用内存数据库时遇到了问题。我已经创建了一个新的上下文,其中包含使用内存中数据库的选项,但是当我运行我的测试时,从repo中取出的dbProduct返回给我的产品是在我的应用程序的数据库上,而不是在内存中数据库上。

public class ProductServiceTests
{
private IRepository repo;
private ApplicationDbContext applicationDbContext;
[SetUp]
public void Setup()
{
var contextOptions = new DbContextOptionsBuilder<ApplicationDbContext>()
.UseInMemoryDatabase("SportAreteMemoryDb")
.Options;
applicationDbContext = new ApplicationDbContext(contextOptions);
applicationDbContext.Database.EnsureDeleted();
applicationDbContext.Database.EnsureCreated();
}
[Test]
public async Task Test_AddProductAsync()
{
var repo = new Repository(applicationDbContext);
IProductService productService = new ProductService(repo);
await productService.AddProductAsync(new AddProductViewModel()
{
Model = "added product model",
Description = "added product description",
Size = "added product size",
Colour = "added product colour",
Price = 100M,
CategoryId = 1,
BrandId = 1,
ImageData = "added product image link"
});
await repo.SaveChangesAsync();
var dbProduct = await repo.GetByIdAsync<Product>(1);
Assert.That(dbProduct.Description, Is.EqualTo("added product description"));
}
[TearDown]
public void TearDown()
{
applicationDbContext.Dispose();
}
}

我试着从头再做一次,但是没有用。

我找到了问题所在。我在我的ApplicationDbContext的OnModelCreating中应用了一些配置,这就是为什么第一个元素不是我所期望的。

最新更新