如何使用 Fromsql() 处理 Dotnet 核心中具有多个表的数据集

Posted

技术标签:

【中文标题】如何使用 Fromsql() 处理 Dotnet 核心中具有多个表的数据集【英文标题】:How to handle data set having multiple tables in Dotnet core using Fromsql() 【发布时间】:2017-11-08 23:19:32 【问题描述】:

我正在使用 dot net core 创建 WebApi

我创建了从 2 个表中返回数据的过程:-

select * from table1
select * from table2

我的模型列表为:-

public class ModelList

public model1 m1  get; set; 
public model2 m2  get; set; 

我正在执行程序并在模式列表中接收结果为:-

List<ModelList> ML= new List<ModelList>();
ML= db.ModelList.FromSql("EXECUTE [dbo].[usp]").ToList();

我没有在这两个单独的对象中得到这两个表的结果。

它适用于单个表,但不适用于多个。

请指出我哪里出错了?

或者在dot net core中是否可行?

【问题讨论】:

在这种情况下你需要使用 ADO.NET 并处理多个结果集 @H.Herzl CORE 中 ADO.net 的功能有限。 【参考方案1】:

以下实现将提供所需的结果:

public ModelList ExecuteMultiple(string query)

             using( IDbConnection connection = new SqlConnection(YOUR_CONNECTION_STRING))
                try
                    connection.Open();
                    var multi = connection.QueryMultiple(query);
                    var modelList = new ModelList();
                    modelList.m1 = multi.Read<model1>();
                    modelList.m2 = multi.Read<model2>();
                    return modelList;
                
                catch( Exception ex)
                    Console.WriteLine(ex.Message);
                finally
                    connection.Close();
                
             

             return null;
         

用法:

var modelList = ExecuteMultiple("EXECUTE [dbo].[usp]");

【讨论】:

以上是关于如何使用 Fromsql() 处理 Dotnet 核心中具有多个表的数据集的主要内容,如果未能解决你的问题,请参考以下文章

Entity Framework 的 FromSql 方法执行使用内部连接选择语句的 SQL Server 表值函数

FromSql():从字符串列表构建查询字符串以防止注入

EF Core中执行Sql语句查询操作之FromSql,ExecuteSqlCommand,SqlQuery

如何在 dotnet 应用程序中创建导航菜单?

如何使用 dotnet/iot Mfrc522 库

如何在 dotnet cli 中使用“-optimize”?