gpt4 book ai didi

c# - .NET Core Entity Framework 存储过程

转载 作者:太空狗 更新时间:2023-10-29 22:21:33 24 4
gpt4 key购买 nike

我正在尝试将 ASP.NET 4.5 应用程序移植到 .NET Core,但我遇到了一个我似乎无法弄清楚的实际问题。

我现有的应用程序执行存储过程,它返回一个包含多个数据表的数据集。 Entity Framework 可以自动将返回的字段映射到我的实体属性,但仅适用于数据集中的第一个数据表(自然)。

所以我只是想弄清楚是否有可能以某种方式拦截模型构建过程并使用自定义代码来处理数据集并查看其他数据表以设置实体字段。

我知道我可以使用 SqlConnection 直接执行存储过程的正常方式,但我想知道 Entity Framework 是否已经有一些方法可以做到这一点。

最佳答案

此刻,the way to execute stored procedures返回数据是使用 DbSet.FromSql 方法。

using (var context = new SampleContext())
{
var data= context.MyEntity
.FromSql("EXEC GetData")
.ToList();
}

这有一定的局限性:

  • 必须在 DbSet 上调用它
  • 返回的数据必须映射到DbSet 类型的所有属性
  • 它不支持临时对象。

或者您可以回退到普通的 ADO.NET:

using (var context = new SampleContext())
using (var command = context.Database.GetDbConnection().CreateCommand())
{
command.CommandText = "GetData";
command.CommandType = CommandType.StoredProcedure;
context.Database.OpenConnection();
using (var result = command.ExecuteReader())
{
// do something with result
}
}

plans to introduce support for returning ad hoc types来自某个阶段的 SQL 查询。

关于c# - .NET Core Entity Framework 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40415463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com