存储过程EF和NET CORE

时间:2016-10-03 19:43:39

标签: c# asp.net entity-framework asp.net-core

我正在构建一个WEB API来生成.net core

中的JSON对象

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

是否有人知道在使用或不使用EF的情况下从网络核心1.0中的BD中检索数据集?

浏览了很多,只能找到使用模型的激光器

提前致谢

1 个答案:

答案 0 :(得分:3)

您可以在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();
        }
    }
}

如果有用,请告诉我。