Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
EF核心:使用sqlite进行两种不同上下文的测试_Sqlite_Unit Testing_Entity Framework Core - Fatal编程技术网

EF核心:使用sqlite进行两种不同上下文的测试

EF核心:使用sqlite进行两种不同上下文的测试,sqlite,unit-testing,entity-framework-core,Sqlite,Unit Testing,Entity Framework Core,我已经第一次在asp.net Core中使用EF Core,我必须承认,我没有发现这种体验有那么好(特别是如果你来自NH)。现在,我有以下场景: 2个不同的DBContext,每个上下文使用不同的模式 设置API是为了让某些API操作被事务包装(实际上,所有内容都已设置为两个上下文共享一个sqlconnection) 我想测试这类方法,但我不确定最好的方法是什么……在阅读文档之后,看起来最好的选择是使用SQLite,但有一个小问题:设置db 文档说我可以使用context.Database.

我已经第一次在asp.net Core中使用EF Core,我必须承认,我没有发现这种体验有那么好(特别是如果你来自NH)。现在,我有以下场景:

  • 2个不同的DBContext,每个上下文使用不同的模式
  • 设置API是为了让某些API操作被事务包装(实际上,所有内容都已设置为两个上下文共享一个sqlconnection)
我想测试这类方法,但我不确定最好的方法是什么……在阅读文档之后,看起来最好的选择是使用SQLite,但有一个小问题:设置db

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

有没有办法强制创建第二个上下文表?我可以用EF Core写这样的东西吗

contextA.Database.EnsureCreated();
contextB.Database.JustCreateTheTablesPlease();
或者,在运行测试之前,是否需要从SQL脚本重新创建数据库

谢谢