【问题标题】:Stored procedures EF and NET CORE存储过程 EF 和 NET CORE
【发布时间】:2016-10-03 19:43:38
【问题描述】:

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

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

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

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

提前致谢

【问题讨论】:

  • 你试过使用经典的 ADO.NET 吗?
  • 它不是在核心中被弃用了吗?如果它没有任何例子如何设置它?我是一名正在转型的 Web 表单开发人员,这完全不同 ^^
  • 当您说数据集时,您是指 ADO.NET 中的数据集类还是来自数据库服务器的结果?
  • 数据库结果
  • 请检查我的答案

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


【解决方案1】:

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

  • System.Data.Common
  • 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();
        }
    }
}

如果有用请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-29
    • 2021-10-13
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    • 2020-04-07
    相关资源
    最近更新 更多