我正在EF Core 2.2的DbContext
(到Oracle数据库)上运行某些单元测试(NUnit),我想看看它为每个单元测试构造的SQL
查询,最好是
我的单元测试类似于:
[SetUp]
public void Setup()
{
var options = new DbContextOptionsBuilder<MyContext>()
.UseOracle("some connection string")
.Options;
_context = new MyContext(options);
}
[Test]
public void We_can_count_all_the_things()
{
var count = _context.Things.Count();
Assert.That(count, Is.GreaterThan(0));
// something like this for Test output:
Assert.Pass($"SQL QUERY:{???}")
}
...或者我可以使用ILogger
将输出定向到测试结果或我不知道的魔术。
感谢您的协助。
答案 0 :(得分:0)
NUnit
的{{3}}是您要查找的内容:
...
TestContext.WriteLine($"SQL QUERY:{???}");
要获取生成的SQL:
EF核心: TestContext.WriteLine
答案 1 :(得分:0)
有一个答案here,它显示了如何使用group[0], group[1] or group[2]
包来记录EF Core SQL查询...
Microsoft.Extensions.Logging.Console
类似这样:-
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder
.UseLoggerFactory(MyLoggerFactory) // Warning: Do not create a new ILoggerFactory instance each time
.UseSqlServer(
@"Server=(localdb)\mssqllocaldb;Database=EFLogging;Trusted_Connection=True;ConnectRetryCount=0");
更多信息here