На момент написания (EF Core 2.1) невозможно выполнить произвольную последовательность, возвращающую команду SQL.
Только типы сущностей и Типы запросов поддерживаются через FromSql
.
Таким образом, наиболее близким решением является определение типа запроса (класс, содержащий результат запроса) и использование FromSql
, но это не универсально - типы запросов должны быть зарегистрированы в DbContext
через свободный API иметод должен получить универсальный аргумент, указывающий этот тип, например
class ResultType
{
// ...
}
, затем
modelBuilder.Query<ResultType>();
и, наконец,
db.Query<ResultType>().FromSql(...)
Обратите внимание, что Database.ExecuteSqlCommand
может выполнять произвольный SQL, но не может использоваться для возврата последовательности (IEnumerable<T>
, IQueryable<T>
).