存储过程EF和NET CORE

3
我正在开发一个基于 .net core 的 WEB API 以生成 JSON 对象。
问题是数据集是由 SQL 存储过程(使用动态 SQL)生成的,我不知道返回的对象类型,因此无法将其映射到具体的模型上,因为输出列根据参数的不同而变化。
有没有人知道如何在不使用 EF 的情况下从数据库中检索数据集?
我查阅了很多资料,但只能找到使用模型的答案。
提前感谢。

你尝试过使用经典的 ADO.NET 吗? - H. Herzl
它不是在核心中被弃用了吗?如果没有的话,有哪些示例可以设置它呢?我是一个正在转型的Web表单开发人员,这很不同 ^^ - Luciano Pinto
数据库返回的结果 - Luciano Pinto
请检查我的答案 - H. Herzl
确切地说 :) 因为SP创建动态SQL,它在元数据结构上创建表,所以我真的不知道哪些表会出现和它有哪些列。 - Luciano Pinto
显示剩余4条评论
1个回答

6
您可以在project.json文件中添加以下依赖项,如下所示:
  • System.Data.Common
  • System.Data.SqlClient
接下来的图片中可以看到:

enter image description here

重新构建您的项目,然后您就可以编写类似于这样的代码:
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Dynamic;

namespace ConsoleApp1
{
    public class Program
    {
        public static IEnumerable<dynamic> GetData(String cmdText)
        {
            using (var connection = new SqlConnection("server=(local);database=Northwind;integrated security=yes;"))
            {
                connection.Open();

                using (var command = new SqlCommand(cmdText, connection))
                {
                    using (var dataReader = command.ExecuteReader())
                    {
                        var fields = new List<String>();

                        for (var i = 0; i < dataReader.FieldCount; i++)
                        {
                            fields.Add(dataReader.GetName(i));
                        }

                        while (dataReader.Read())
                        {
                            var item = new ExpandoObject() as IDictionary<String, Object>;

                            for (var i = 0; i < fields.Count; i++)
                            {
                                item.Add(fields[i], dataReader[fields[i]]);
                            }

                            yield return item;
                        }
                    }
                }
            }
        }

        public static void Main(String[] args)
        {
            foreach (dynamic row in GetData("select * from Shippers"))
            {
                Console.WriteLine("Company name: {0}", row.CompanyName);
                Console.WriteLine();
            }

            Console.ReadKey();
        }
    }
}

请告诉我这是否有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接