Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / core 2.2 как запустить произвольный sql / 7 сообщений из 7, страница 1 из 1
10.07.2020, 20:24
    #39978276
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
core 2.2 как запустить произвольный sql
Коллеги!
Есть приложение на .net core 2.2 & ef core 2.2 & sql server
Появилась необходимость получать данные из произвольного sql (и желательно из stored procedure тоже)
гугл не помогает. примеры только для 3.1.
подскажите как такое можно сделать для 2.2
...
Рейтинг: 0 / 0
10.07.2020, 20:39
    #39978278
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
core 2.2 как запустить произвольный sql
гугл говорит - FromSql
...
Рейтинг: 0 / 0
10.07.2020, 21:13
    #39978287
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
core 2.2 как запустить произвольный sql
Shocker.Pro,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Threading.Tasks;

namespace JMDbContext.DBContext
{
    public class DbContextFactory : IDbContextFactory
    {
        IServiceProvider _serviceProvider;

        public DbContextFactory(IServiceProvider serviceProvider)
        {
            _serviceProvider = serviceProvider;
        }

        public async Task DbContext(Func<JMDbContext, Task> func)
        {
            using (var scope = _serviceProvider.CreateScope())
            {
                using (var context = scope.ServiceProvider.GetRequiredService<JMDbContext>())
                {
                    await func(context);
                }
            }
        }
    }

    public interface IDbContextFactory
    {
        Task DbContext(Func<JMDbContext, Task> func);
    }
}



это пример рабочего кода из core 3.1, приблизительно его мне надо в 2.2 реализовать, но с вариациями, в которых нужно запускать sql, sp и function.
в context.Database

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
using System;
using System.Threading;
using Microsoft.AspNetCore.Hosting;
using JMDbContext.DBContext;
using Microsoft.Extensions.Logging;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;

namespace JM.Metric
{
    public class MetricSQL
    {
        readonly IHostingEnvironment _env;
        readonly IDbContextFactory _context;
        readonly ILogger<MetricSQL> _logger;

        public MetricSQL(IHostingEnvironment env, IDbContextFactory context, ILogger<MetricSQL> logger)
        {
            _env = env;
            _logger = logger;
            _context = context;
            Host = System.Net.Dns.GetHostName();
        }


        private async void GetCount(object o)
        {

            _context.DbContext(async (context) =>
              {
                  try
                  {
                     
                     var conn = context.Database.GetDbConnection();  
                     var cmd = conn.CreateCommand();
                     cmd.CommandText = "select count(distinct s.phone ) from uInfo (nolock) ui inner join [dbo].Starts (nolock) s on ui.guid = s.guid where ui.Start= 1;";
                      conn.Open();
                      var res = (int)cmd.ExecuteScalar();
                            .....
                      return;
                  }
                  catch (Exception ex)
                  {
                      _logger.LogError($"Request: {error.ErrorTrace}. Error: {error.ErrorMessage}");
                  }
              });
        }
    }
}
...
Рейтинг: 0 / 0
10.07.2020, 21:27
    #39978292
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
core 2.2 как запустить произвольный sql
RegisteredUser
это пример рабочего кода из core 3.1, приблизительно его мне надо в 2.2 реализовать, но с вариациями, в которых нужно запускать sql, sp и function.
думаешь, из примера какой-то ниоткуда не вызываемой async void (!!!) функции можно понять, что ты хочешь?

Тут причем вообще EF и FromSQL, если в твоем примере вызов CreateCommand?
...
Рейтинг: 0 / 0
11.07.2020, 00:46
    #39978333
stenford
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
core 2.2 как запустить произвольный sql
это extension метод из Microsoft.EntityFrameworkCore.Relational пакета, и Microsoft.EntityFrameworkCore namespace'а
...
Рейтинг: 0 / 0
12.07.2020, 00:28
    #39978534
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
core 2.2 как запустить произвольный sql
RegisteredUser,

Пробовали гуглить-то? :)

https://docs.microsoft.com/ru-ru/ef/core/querying/raw-sql
...
Рейтинг: 0 / 0
13.07.2020, 10:27
    #39978813
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
core 2.2 как запустить произвольный sql
Спасибо. Помогло.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / core 2.2 как запустить произвольный sql / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]