Хранимые процедуры EF и NET CORE

#c# #asp.net #entity-framework #asp.net-core

#c# #asp.net #entity-framework #asp.net-core

Вопрос:

Я создаю ВЕБ-API для создания объектов JSON в .net core

Дело в том, что наборы данных генерируются в хранимых процедурах SQL (с использованием динамического SQL), и я не знаю тип возвращаемых объектов, поэтому я могу сопоставить его с конкретной моделью, поскольку выходные столбцы меняются в зависимости от параметров.

Кто-нибудь знает, как восстановить набор данных из BD в net core 1.0 с использованием EF или без него?

Много просматривал и могу найти только те, которые используют модели

Заранее спасибо

Комментарии:

1. Вы пробовали использовать classic ADO.NET ?

2. разве это не устарело в core? если нет каких-либо примеров, как это установить? я разработчик веб-форм, совершающий переход, его совершенно другой ^^

3. Когда вы говорите «набор данных», вы имеете в виду класс набора данных в ADO.NET или результат с сервера базы данных?

4. Результат из базы данных

5. Проверьте мой ответ, пожалуйста

Ответ №1:

Вы можете добавить следующие зависимости для своего проекта в файле project.json:

  • System.Data.Обычный
  • 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();
        }
    }
}
  

Пожалуйста, дайте мне знать, если это полезно.