[英]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");
...
});
但不幸的是,上述映射不起作用。 特別是對於第二張桌子。
首先,存儲過程的結果不是表,我的意思是用戶表。
因此,我認為您的問題有兩種可能的解決方案:
使用純 ADO.NET,執行數據讀取器並將結果轉換為結果模型
使用 EF Core 的外部方法
對於第 1 點,請閱讀這個問題: EF Core 查詢存儲過程映射到類型
對於第 2 點,請閱讀這個問題: 在 .net core 中使用多個結果集
您也可以閱讀此問題:支持多個結果集 #8127
讓我知道這個答案是否有用。
在 EF Core 實現類似功能之前,您可能想要這篇文章:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.