【问题标题】:Error CS1061: 'DbSet<T>' does not contain a definition for 'FromSql' and no extension method 'FromSql' accepting a first argument of type 'DbSet<T>'错误 CS1061:“DbSet<T>”不包含“FromSql”的定义,并且没有扩展方法“FromSql”接受“DbSet<T>”类型的第一个参数
【发布时间】:2018-12-03 16:31:33
【问题描述】:

我正在尝试在 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”的定义 并且没有扩展方法“FromSql”接受类型的第一个参数 可以找到“DbSet”(您是否缺少 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://docs.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.relationalqueryableextensions.fromsql?view=efcore-2.1

但无法找到错误解决方案。谁能告诉我我错过了什么。

【问题讨论】:

  • 您确定Microsoft.EntityFrameworkCore.Relational.dll 程序集在您项目的依赖项中吗?
  • 是的,谢谢。 . . . . .我错过了那个...

标签: c# asp.net asp.net-mvc entity-framework asp.net-core


【解决方案1】:

安装Microsoft.EntityFrameworkCore.Relationalnuget包,然后在类中添加using语句

使用Microsoft.EntityFrameworkCore;

【讨论】:

    【解决方案2】:

    自从 Umer 回答后,情况可能已经改变。它现在位于 Microsoft.EntityFrameworkCore 命名空间中。但是你需要引用这个包。

    所以...

    dotnet add package Microsoft.EntityFrameworkCore.Relational
    

    并添加这一行...

    using Microsoft.EntityFrameworkCore;
    

    【讨论】:

      【解决方案3】:

      用这条线解决了我这个问题:

      using Microsoft.EntityFrameworkCore;
      

      【讨论】:

        【解决方案4】:

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

        FromSqlInterpolated()
        

        https://docs.microsoft.com/en-us/ef/core/querying/raw-sql

        因此,您必须使用 .FromSql 到 .FromSqlInterpolated 查找/替换所有代码。他们在上面的文档中讨论了动机,尽管我不得不说新方法名称的长度是不受欢迎的。

        其他答案所说的仍然是必要的 - 您需要安装 Nuget 包 Microsoft.EntityFrameworkCore.Relational,并为 Microsoft.EntityFramework 添加了 using 语句。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

            using Microsoft.EntityFrameworkCore.Relational;
            

            【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-03-13
            • 2019-07-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多