EF Core:使用sqlite在2种不同的上下文中进行测试

时间:2019-01-16 22:14:14

标签: sqlite unit-testing entity-framework-core

我第一次使用asp.net core来使用EF Core,我必须承认我没有找到好的体验(特别是如果您来自NH)。现在,我有以下情形:

  • 2个不同的DbContext,每个上下文使用不同的模式
  • 已设置API,以便事务处理可以包装一些API操作(实际上,已设置了所有内容,以便两个上下文共享单个sqlconnection)

我想测试这些方法,但是我不确定采用哪种最佳方法……阅读文档后,看来最好的选择是使用SQLite,但是有一个小难题:设置数据库。

文档说我可以使用context.Database.EnsureCreated方法。不幸的是,这仅在尚未创建内存数据库的情况下才有效。换句话说,在从第一个上下文实例中调用if之后,在第二个上下文实例上调用时它不会执行任何操作(因为两个上下文共享同一个db,并且它已经在第一个调用之后创建)。实际上,这意味着我将得到一个部分db,该部分db的表映射到第一个上下文的实体。

是否有一种方法可以强制创建第二个上下文表?即,我可以使用EF Core编写类似的内容吗?

contextA.Database.EnsureCreated();
contextB.Database.JustCreateTheTablesPlease();

还是在运行测试之前是否需要通过SQL脚本重新创建数据库?

谢谢。

0 个答案:

没有答案