我已经使用Npgsql.EntityFrameworkCore.PostgreSQL创建了EF Core DbContext。我想在单元测试项目的测试用例中实例化此DbContext。不是创建实际的单元测试,而是尝试使用此DbContext操作Postgresql数据库。
由于这不是一个ASP.NET Core项目,因此没有依赖项注入,也没有AddEntityFrameworkNpgsql / AddDbContext扩展方法。
我已经检查了documentation,找不到示例。
那么,如何直接实例化此DbContext?
答案 0 :(得分:0)
原来可以在这里使用UseNpgsql
扩展方法:
using Xunit;
using Microsoft.EntityFrameworkCore;
using System.Linq;
namespace MyTestProject
{
public class DbContextTest
{
[Fact]
public void ActualQuery()
{
var optionsBuilder = new DbContextOptionsBuilder<MyDbContext>()
.UseNpgsql("Host=mypgsvr;Database=mydb;Username=myusr;Password=mypass");
var SUT = new MyDbContext(optionsBuilder.Options);
var firstRow = SUT.mytable.First();
Assert.NotNull(firstRow);
}
}
}
答案 1 :(得分:0)
执行此操作的标准方法是在DbContext上简单地构造一个接受连接字符串的构造函数,或一个无参数的构造函数并在内部执行连接字符串查找(例如,通过Microsoft.Extension.Configuration)。对于这种用途,使用DbContextOptionsBuilder不必要地繁琐。
请参见the EF Core docs for regular .NET Core applications,与通常使用依赖项注入的ASP.NET应用程序相反。