asp.net 错误CS1061:“DbSet< T>”不包含“FromSql”的定义,也不包含接受“DbSet”类型的第一个参数的扩展方法“FromSql”< T>

h7appiyu  于 2023-02-06  发布在  .NET
关注(0)|答案(8)|浏览(338)

我试图在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
但是找不到错误的解决方案。有没有人能让我知道我,错过了什么。

wfypjpf4

wfypjpf41#

安装Microsoft.EntityFrameworkCore.Relational nuget软件包,然后将using语句添加到类中
使用Microsoft.EntityFrameworkCore;

yr9zkbsy

yr9zkbsy2#

这可能在Umer回答后发生了变化。它现在位于Microsoft.EntityFrameworkCore命名空间中。但是您需要引用该包。
所以...

dotnet add package Microsoft.EntityFrameworkCore.Relational

加上这一行...

using Microsoft.EntityFrameworkCore;
hkmswyz6

hkmswyz63#

在最新版本中,Microsoft将此方法重命名为:

FromSqlInterpolated()

https://learn.microsoft.com/en-us/ef/core/querying/raw-sql
因此,您必须查找/替换所有使用.FromSql到. FromSqlInterpolated的代码。他们在上面的文档中讨论了动机,尽管我不得不说新方法名称的长度是不受欢迎的。
其他答案所说的内容仍然是必要的-您需要安装Nuget包Microsoft.EntityFrameworkCore.Relational,并且为Microsoft. EntityFrameworkCore. Relational添加using语句。

14ifxucb

14ifxucb4#

它为我解决了这个使用这行:

using Microsoft.EntityFrameworkCore;
xa9qqrwz

xa9qqrwz5#

希望这可能是有用的,因为它与上述问题有关,很可能其他人也会有同样的问题。我无法访问.fromSql内的服务,驻留在一个单独的服务项目从Web.API(MVC项目)我能够从API项目中的一个控制器内访问.fromSql。令我困惑的是,Web中没有直接引用。Microsoft.EntityFrameworkCore.Relational的API项目EntityFramework项目引用了Microsoft.EntityFrameworkCore.SqlServer nuget包。通过添加对服务项目的引用,服务现在能够使用. FromSql。这是漫长的一天,但我仍然不知道为什么web.api工作,但服务项目需要直接引用。

8iwquhpp

8iwquhpp6#

在Net core 6中,方法名称已更改为FromSqlRaw
因此,您需要安装以下软件包,如果您还没有:

PM > Install-Package Microsoft.EntityFrameworkCore.Relational

并使用FromSqlRaw代替:

using Microsoft.Data.SqlClient; //parameters must come from this namespace and not System.Data.SqlClient

var param1Value= new SqlParameter("Param1", "value1");
context.SomeEntity
       .FromSqlRaw("EXECUTE dbo.StoredProcedureName @Param1", param1Value)
       .ToList();
enxuqcxy

enxuqcxy7#

它为我解决了这个使用这行:$使用System.Linq;

polhcujo

polhcujo8#

将此行添加到出现此错误的文件的顶部。FromSql是一个扩展方法,在Microsoft.EntityFrameworkCore.Relational程序集中实现。

using Microsoft.EntityFrameworkCore.Relational;

相关问题