存储过程EF和NET CORE

Luc*_*nto 3 c# asp.net entity-framework asp.net-core

我正在构建一个WEB API以在.net core中生成JSON对象

关键是数据集是在SQL存储过程(使用动态SQL)中生成的,我不知道返回的对象类型,因此我可以将其映射到具体模型,因为输出列根据参数而变化。

有没有人知道如何在使用或不使用EF的情况下从net core 1.0中的BD检索数据集?

浏览了很多,只能找到使用模型的答案

提前致谢

H. *_*rzl 5

您可以在project.json文件中为项目添加以下依赖项:

  • 系统数据通用
  • System.Data.SqlClient

如下图所示:

在此处输入图片说明

重建您的项目,您可以编写如下代码:

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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请让我知道这是否有用。