В приложении .NET core web api я использую ef core в функции, для которой мне нужно запустить какой-нибудь raw sql, а затем, когда я пытаюсь использовать контекст после raw sql, он не работает.
контекст передается от контроллера к логическим файлам (фактический бизнес
код) является частным только для чтения
Я попытался снова открыть соединение, но это не удалось.
DbConnection conn = _context.Database.GetDbConnection();
using (conn)
{
await conn.OpenAsync();
using (DbCommand cmd = conn.CreateCommand())
{
//Raw SQL
}
}
Table1 t1 = await _context.Table1
.Where(i => i.id == 1)
.SingleOrDefaultAsync();
Все работает нормально, пока приложение не доходит до строки Table1 t1
, тогда я получаю ошибку
Я получаю ошибку
InvalidOperationException: The ConnectionString property has not been initialized.
System.Data.SqlClient.SqlConnection.PermissionDemand()
Редактировать
Я спрашиваю, есть ли лучший способ запуска необработанного SQL, который возвращает данные, которые не сопоставлены с сущностью, и затем продолжает использовать EF Core. Также иногда мой сырой SQL возвращает только строку или десятичное значение
Редактировать # 2
Спасибо за помощь, я буду использовать предложение, сделанное
Иван Стоев
Обновлен рабочий код
DbConnection conn = _context.Database.GetDbConnection();
await context.Database.OpenConnectionAsync();
using (DbCommand cmd = conn.CreateCommand())
{
//Raw SQL
}
context.Database.CloseConnection();
Table1 t1 = await _context.Table1
.Where(i => i.id == 1)
.SingleOrDefaultAsync();