Похоже, что драйвер неисправен/не обновляется. Я нашел способ обойти его, изменив 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 config reader не загружен, и я не чувствую, что загружаю его отдельно в DbContext. Но он работает и позволяет мне тестировать запросы EF Core в LinqPad с моей модели.
Это прекрасно работает для меня:
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) { }
конечно.
Редактировать: Будьте осторожны, похоже, что это переопределяет поведение по умолчанию, которое может не отображаться до тех пор, пока вы не развернетесь на сервере.