Невозможно использовать метод .SqlQuery при переносе с .NET Framework на .NET Standard 2.0.

В настоящее время я переношу свой проект с .NET Framework на .NET Standard 2.0 и буду передавать пакеты nuget в приложение .NET Core. С учетом сказанного у меня в настоящее время возникают проблемы с обработкой этой последней проблемы, которая заключается в том, что я не могу использовать метод SqlQuery с использованием стандартной платформы .NET. Ниже приведена ошибка, которую я получаю, а также используемые библиотеки и где я изначально использовал метод SqlQuery. Я видел различные реализации с FromSql, однако я не верю, что это работает для меня, потому что я хочу вернуть int, а FromSql возвращает TEntity.


«DatabaseFacade» не содержит определения для «SqlQuery», и не может быть найден доступный метод расширения «SqlQuery», принимающий первый аргумент типа «DatabaseFacade» (вам не хватает директивы using или ссылки на сборку?)


using Microservices.LibCore.Core;
using Microservices.LibCore.Core.Base.Models;
using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;
using NLog;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.SqlClient;
using System.Linq;
using System.Net;
using System.Reflection;

public static List<object> setLegacyKey(DbContext dbContext, ServiceObject obj)
        {
            var keyValuesFound = new List<object>();
            var keyProperties = getKeyProperties(obj);

            foreach (var key in keyProperties)
            {
                string sql = "select " + getKeyColumnName(key) + " from " + getTableName(obj) + " where global_id=@p0";

                List<object> result = dbContext.Database.SqlQuery(key.PropertyType, sql, obj.Id).ToListAsync().Result;

                if (result.Count == 0)
                {
                    throw new ServiceException(ServiceError.ERROR_CODE.INVALID_REQUEST, String.Format("Invalid {1}.ID ({0})", obj.Id, obj.GetType().Name));
                }

                var keyValue = result.FirstOrDefault();

                key.SetValue(obj, keyValue);

                keyValuesFound.Add(keyValue);
            }

            return keyValuesFound;
        }

person Danny    schedule 18.10.2018    source источник
comment
Посмотрите на кого-то с похожей проблемой здесь: stackoverflow.com/questions/40428158/   -  person Tom John    schedule 18.10.2018
comment
Возможный дубликат Выполнить процедуру без запроса, не работающую ядро ​​asp.net   -  person Tom John    schedule 18.10.2018
comment
Только не используйте для этого EF. Микро-ORM, такая как Dapper, намного проще для таких задач; для достижения желаемого требуется всего несколько строк. Выполнение необработанных SQL-запросов никогда не является основной деятельностью полных OR/сопоставителей.   -  person Gert Arnold    schedule 19.10.2018