gpt4 book ai didi

c# - EF Core 中返回多个结果集的映射存储过程

转载 作者:行者123 更新时间:2023-12-02 04:03:02 24 4
gpt4 key购买 nike

我目前正在将一个已经建立的网站从旧的 ASP.NET 迁移到 ASP.NET Core 2.2。该数据库是跨其他平台的共享数据库,并且也是已建立的,因此我不能对其进行任何更改。

当我必须从 EF Core 调用一个存储过程时,我遇到了这个问题,该存储过程返回 3 个结果集。存储过程的结果集是这样的。

表1

ColumnName1 | ColumnName2 | SomeColumn | AndMoreColumns
------------+-------------+------------+---------------
Value1 | value 2 | value 3 | Value 4

表1

Column1    | Column2
-----------+----------
value1 | value 2

表3

Column1
-------
Value1

表 1 和表 2 相互关联。该表将始终在表 1 上返回 1 行,表 2 可以返回多行,而表 3 是静态的。

现在,我的问题是。如何将此结果集映射到 EF Core Query<T>模型构建器?我想按列名称映射它,因为我想让列名称更友好。我有一个不起作用的例子,如下所示。

modelBuilder.Query<MyModel>(a => 
{
a.Property(b=>b.ModelId).HasColumnName("ColumnName1");
a.Property(b=>b.ModelName).HasColumnName("ColumnName2");
...
});

但不幸的是,上面的映射不起作用。特别是对于第二个表。

最佳答案

首先,存储过程的结果不是表,我的意思是用户表。

所以,我认为您的问题有两种可能的解决方案:

  1. 使用纯 ADO.NET,执行数据读取器并将结果转换为结果模型

  2. 使用 EF Core 的外部方法

对于第 1 点,请阅读以下问题:EF Core query stored procedure map to types

对于第2点,请阅读这个问题:Working with multiple resultset in .net core

您也可以阅读此期:Support multiple resultsets #8127

请告诉我这个答案是否有用。

关于c# - EF Core 中返回多个结果集的映射存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56880399/

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