我目前正在将已经建立的网站从旧的ASP.NET迁移到ASP.NET Core 2.2。该数据库是跨其他平台的共享数据库,并且也已建立,因此我不能随便更改任何内容。
我不得不从EF Core调用存储过程时遇到了这个问题,该存储过程返回3个结果集。存储过程的结果集是这样的。
ColumnName1 | ColumnName2 | SomeColumn | AndMoreColumn
_______________________________________________________
Value1 | value 2 | value 3 | Value 4
Column1 | Column2
______________________
value1 | value 2
Column1
Value1
表1和表2相互关联。该表将始终在表1上返回1行,而在表3静态时,表2可以返回多行。
现在,我的问题是。如何将此结果集映射到EF Core Query模型构建器?我想按列名映射它,因为我想使列名更友好。我遇到的一个没有用的例子就是这样。
modelBuilder.Query<MyModel>(a =>
{
a.Property(b=>b.ModelId).HasColumnName("ColumnName1");
a.Property(b=>b.ModelName).HasColumnName("ColumnName2");
...
});
但不幸的是,上述映射无法正常工作。特别是第二张桌子。
答案 0 :(得分:1)
首先,存储过程的结果不是一个表,我的意思是一个用户表。
所以,我认为您的问题有两种可能的解决方案:
使用纯ADO.NET,执行数据读取器并将结果转换为结果模型
使用EF Core的外部方法
对于第1点,请阅读以下问题:EF Core query stored procedure map to types
对于第2点,请阅读以下问题:Working with multiple resultset in .net core
您也可以阅读以下问题:Support multiple resultsets #8127
让我知道这个答案是否有用。
答案 1 :(得分:0)
在 EF Core 实现类似功能之前,您可能想要这篇文章: