驱动程序似乎是越野车/根本没有更新。我找到了一种通过修改DbContext来绕过它的方法。
从理论上讲,这应该有工作,但它并不:
private string _connectionString;
public ApplicationDbContext(string connectionString) : base()
{
_connectionString = connectionString;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (_connectionString == null)
base.OnConfiguring(optionsBuilder); // Normal operation
// We have a connection string
var dbContextOptionsBuilder = new DbContextOptionsBuilder();
optionsBuilder.UseSqlServer(_connectionString);
base.OnConfiguring(dbContextOptionsBuilder);
}
LinqPad EF核心驱动器仍然在寻找即使您指定“通过接受字符串构造”的参数的构造函数。这似乎是司机中的一个错误。
所以然后我给它它想要的,一个无参数的构造函数。由于IoC/appsettings.json配置读取器没有加载,我不得不硬编码连接字符串,我不想在DbContext中单独加载。但它的工作原理让我可以在我的模型中测试LinqPad中的EF Core查询。
也能正常工作对我来说:
private bool _isDebug = false;
public ApplicationDbContext() : base()
{
_isDebug = true;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!_isDebug)
base.OnConfiguring(optionsBuilder); // Normal operation
// We are in debug mode
var dbContextOptionsBuilder = new DbContextOptionsBuilder();
// Hardcoded connection string
optionsBuilder.UseSqlServer("data source=XXXX;initial catalog=XXXX;persist security info=True;user id=XXXX;password=XXXX;MultipleActiveResultSets=True;App=EntityFramework");
base.OnConfiguring(dbContextOptionsBuilder);
}
这是除了当然的现有public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { }
。
编辑:请注意,它看起来像覆盖了默认行为,在部署到服务器之前它可能不可见。