我在堆栈溢出时看到了一些与此相关的问题,但没有一个有帮助。我正在使用VS 2019社区版,我在.NetCore 2.1上创建了一个API项目,并添加了以下nuget包。 (假设默认情况下将包括所有EF软件包)
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Design
经过一段时间的编码,我需要在OnModelCreating函数中使用MapToStoredProcedures。但是它不可用,
entitytypebuilder不包含maptostored过程的定义
在寻找一些解决方案之后,我尝试了
安装软件包Microsoft.EntityFrameworkCore.Relational
由于存在版本冲突问题,因此不起作用...
NU1202:软件包Microsoft.EntityFrameworkCore.Relational 3.0.0与netcoreapp2.1(.NETCoreApp,Version = v2.1)不兼容。
然后我尝试安装SDK并重新启动VS,然后我再次尝试安装Microsoft.EntityFrameworkCore.Relational nuget包,但存在相同的错误。
最后,我安装了:
Microsoft.EntityFramework(6.3)和较旧版本的Microsoft.EntityFrameworkCore.Relational(2.1.11)
这是成功的,但是MapToStoredProcedures函数仍然不可用。
类中的using语句也不显示Microsoft.EntityFrameworkCore.Relational命名空间...
我非常困惑,因为该功能以前在带有EF 6的VS 2013中可用::S
因此,我意识到EF 6曾经具有MapToStoredProcedures函数,而EF Core却没有。 (不知道他们为什么这么决定)。
我将目标框架从netcoreapp2.1更改为netcoreapp3.0,然后能够安装Tools和Microsoft.EntityFrameworkCore.Relational程序包。
最后,我按如下方式呼叫我的sp:
var dbResults = _gecontext.ParameterDetails.FromSqlRaw("EXEC dbo.get_nextParamSummary @UserId={0}", userId).ToList();