我试图在mac os webapi上使用asp.net core 2. 1调用视图或存储过程。
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;
}
获取以下错误
错误CS1061:"DbSet"不包含"FromSql"的定义,并且找不到接受"DbSet"类型的第一个参数的扩展方法"FromSql"(是否缺少using指令或程序集引用?)(CS1061)
我正在mac os上使用实体框架开发webapi。
研究以下链接中的一些查询:-Raw SQL Query without DbSet - Entity Framework Core
Raw SQL Query without DbSet - Entity Framework Core
https://forums.asp.net/t/1886501.aspx?System+Data+Entity+DbSet+Entities+User+does+not+contain+a+definition+for+FirstOrDefault+
https://learn.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.relationalqueryableextensions.fromsql?view=efcore-2.1
但是找不到错误的解决方案。有没有人能让我知道我,错过了什么。
8条答案
按热度按时间wfypjpf41#
安装
Microsoft.EntityFrameworkCore.Relational
nuget软件包,然后将using语句添加到类中使用
Microsoft.EntityFrameworkCore;
yr9zkbsy2#
这可能在Umer回答后发生了变化。它现在位于
Microsoft.EntityFrameworkCore
命名空间中。但是您需要引用该包。所以...
加上这一行...
hkmswyz63#
在最新版本中,Microsoft将此方法重命名为:
https://learn.microsoft.com/en-us/ef/core/querying/raw-sql
因此,您必须查找/替换所有使用.FromSql到. FromSqlInterpolated的代码。他们在上面的文档中讨论了动机,尽管我不得不说新方法名称的长度是不受欢迎的。
其他答案所说的内容仍然是必要的-您需要安装Nuget包Microsoft.EntityFrameworkCore.Relational,并且为Microsoft. EntityFrameworkCore. Relational添加using语句。
14ifxucb4#
它为我解决了这个使用这行:
xa9qqrwz5#
希望这可能是有用的,因为它与上述问题有关,很可能其他人也会有同样的问题。我无法访问.fromSql内的服务,驻留在一个单独的服务项目从Web.API(MVC项目)我能够从API项目中的一个控制器内访问.fromSql。令我困惑的是,Web中没有直接引用。Microsoft.EntityFrameworkCore.Relational的API项目EntityFramework项目引用了Microsoft.EntityFrameworkCore.SqlServer nuget包。通过添加对服务项目的引用,服务现在能够使用. FromSql。这是漫长的一天,但我仍然不知道为什么web.api工作,但服务项目需要直接引用。
8iwquhpp6#
在Net core 6中,方法名称已更改为
FromSqlRaw
。因此,您需要安装以下软件包,如果您还没有:
并使用
FromSqlRaw
代替:enxuqcxy7#
它为我解决了这个使用这行:$使用System.Linq;
polhcujo8#
将此行添加到出现此错误的文件的顶部。FromSql是一个扩展方法,在Microsoft.EntityFrameworkCore.Relational程序集中实现。