В настоящее время я переносю свой проект из .NET Framework на .NET Standard 2.0 и буду передавать пакеты nuget в приложение .NET Core.С учетом сказанного, в настоящее время у меня возникают проблемы с обработкой этой последней проблемы, которая заключается в том, что я не могу использовать метод SqlQuery с использованием платформы .NET Standard.Ниже приведена ошибка, которую я получаю, а также используемые библиотеки и место, где я изначально использовал метод 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;
}