簡體   English   中英

使用 EF Core 中返回的多個結果集映射存儲過程

[英]Map stored procedure with multiple resultset returned in EF Core

我目前正在將一個已經建立的網站從舊的 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 查詢存儲過程映射到類型

對於第 2 點,請閱讀這個問題: 在 .net core 中使用多個結果集

您也可以閱讀此問題:支持多個結果集 #8127

讓我知道這個答案是否有用。

在 EF Core 實現類似功能之前,您可能想要這篇文章:

https://www.danylkoweb.com/Blog/aspnet-core-with-entity-framework-core-returning-multiple-resultsets-OL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM