首页 > 解决方案 > 如何在 .NET Core 3.1 控制台应用程序中使用 Entity Framework Core 调用存储过程?

问题描述

我有一个 C# .NET Core 3.1 控制台应用程序。我需要通过存储过程查询 SQL 数据库以进行数据检索。

我一直在尝试使用 NuGet 将 Microsoft.EntityFrameworkCore 包安装到项目中。

我收到错误消息说 Entity Framework Core 5.0 与 .Net Core 3.1 不兼容。我尝试过早期版本的 Entity Framework Core,但仍然出现兼容性错误。

我应该尝试将 Entity Framework Core 与 .NET Core 一起使用吗?有没有办法解决这些兼容性问题?

如何从 EF Core 调用 SQL 存储过程?

以下是我尝试通过 NuGet 将 EntityFrameworkCore.SQL 包添加到我的解决方案时看到的错误:

Error       Package restore failed. Rolling back package changes for 'Foo.WebAPI'.
Error   NU1202  Package Microsoft.Extensions.DependencyInjection 5.0.0 is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Package Microsoft.Extensions.DependencyInjection 5.0.0 does not support any target frameworks.
Error   NU1202  Package Microsoft.IdentityModel.Tokens 5.6.0 is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Package Microsoft.IdentityModel.Tokens 5.6.0 does not support any target frameworks.
Error   NU1202  Package System.Net.NameResolution 4.3.0 is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Package System.Net.NameResolution 4.3.0 supports:  - monoandroid10 (MonoAndroid,Version=v1.0)  - monotouch10 (MonoTouch,Version=v1.0)  - xamarinios10 (Xamarin.iOS,Version=v1.0)  - xamarinmac20 (Xamarin.Mac,Version=v2.0)  - xamarintvos10 (Xamarin.TVOS,Version=v1.0)  - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0)

标签: entity-framework-core.net-core-3.1

解决方案


希望您能够解决 .net core 3.1->5.0 升级时遇到的安装问题。一种方法可能是重新开始使用针对核心 5.0 的新 .net 核心控制台应用程序,并将所有业务逻辑等移动到新的控制台应用程序中。如果您确实解决了升级问题,这里是您上述问题的答案。

var user = "johndoe";
var blogs = context.Blogs
    .FromSqlRaw("EXECUTE dbo.GetMostPopularBlogsForUser {0}", user)
    .ToList();

来自 Microsoft Docs “原始查询” https://docs.microsoft.com/en-us/ef/core/querying/raw-sql

就我个人而言,我尝试避免在代码优先 EF 中使用 SP,就像瘟疫一样,但在极少数情况下 LINQ 和 EF 无法处理这项工作,你必须转到 SP。


推荐阅读