Я пытаюсь вызвать процедуру просмотра или сохранения с помощью asp.net ядро 2.1 на Mac OS Webapi.
using System;
using System.Linq;
using Auth.Database;
using Microsoft.EntityFrameworkCore;
public virtual IQueryable<T> ExecuteStoreProcView(string viewProcName)
{
IQueryable<T> queryResult = _entities.Set<T>().FromSql(viewProcName).AsQueryable();
return queryResult;
}
Получение ошибки ниже
Error CS1061: 'DbSet' does not contain a definition for 'FromSql' and no extension method 'FromSql' accepting a first argument of type 'DbSet' could be found (are you missing a using directive or an assembly reference?) (CS1061)
Я разрабатываю webapi с использованием entity framework на mac os.
Изучите некоторые запросы по ссылке ниже: - Необработанный SQL-запрос без DbSet - Entity Framework Core
Необработанный SQL-запрос без DbSet - Entity Framework Core
Но найти решение ошибки не удалось. Может ли кто-нибудь, пожалуйста, дайте мне знать, что мне не хватает.
да спасибо . . . . . . Мне не хватало этого ...





Добавьте эту строку поверх файла, в котором возникает эта ошибка. FromSql - это метод расширения, реализованный в сборке Microsoft.EntityFrameworkCore.Relational.
using Microsoft.EntityFrameworkCore.Relational;
Microsoft.EntityFrameworkCore.Relational не является пространством имен. См .: stackoverflow.com/a/44654829/1819403
Это могло измениться с тех пор, как Умер ответил. Теперь он находится в пространстве имен Microsoft.EntityFrameworkCore. Но вам нужно будет сослаться на пакет.
Так...
dotnet add package Microsoft.EntityFrameworkCore.Relational
И добавьте эту строчку ...
using Microsoft.EntityFrameworkCore;
установите пакет Nuget Microsoft.EntityFrameworkCore.Relational, а затем добавьте оператор using в класс
с использованием Microsoft.EntityFrameworkCore;
Это решило для меня с помощью этой строки:
using Microsoft.EntityFrameworkCore;
В последней версии Microsoft переименовала этот метод в:
FromSqlInterpolated()
https://docs.microsoft.com/en-us/ef/core/querying/raw-sql
Поэтому вам придется найти / заменить весь код, используя .FromSql на .FromSqlInterpolated. Они обсуждают мотивацию в приведенном выше документе, хотя я должен сказать, что длина имени нового метода нежелательна.
То, что говорят другие ответы, по-прежнему необходимо - вам необходимо установить пакет Nuget Microsoft.EntityFrameworkCore.Relational и добавить оператор using для Microsoft.EntityFramework.
Надеюсь, это может быть полезно, поскольку связано с вышеуказанной проблемой и, вероятно, у других будет такая же проблема. Мне не удалось получить доступ к .FromSql внутри службы, которая находилась в отдельном проекте службы из Web.Api (проект MVC). Мне удалось получить доступ к .FromSql из контроллера в проекте Web.Api. Что меня смутило, так это то, что в проекте web.api нет прямой ссылки на Microsoft.EntityFrameworkCore.Relational. На пакет Nuget Microsoft.EntityFrameworkCore.SqlServer ссылается проект EntityFramework. Добавив ссылку на сервисный проект, сервисы теперь могут использовать .FromSql. Это был долгий день, но я до сих пор не знаю, почему работает web.api, но проект службы нуждается в прямой ссылке.
Вы уверены, что сборка
Microsoft.EntityFrameworkCore.Relational.dllвходит в зависимости вашего проекта?