从.NET Framework移植到.NET Standard 2.0时,无法使用.SqlQuery方法

时间:2018-10-18 16:47:52

标签: c# sql entity-framework microservices .net-standard-2.0

我目前正在将我的项目从.NET Framework移植到.NET Standard 2.0,并将把nuget软件包提供给.NET Core应用程序。话虽如此,我目前在处理最后一个问题时遇到问题,即我无法使用.NET Standard框架使用SqlQuery方法。以下是我收到的错误以及正在使用的库以及我最初使用SqlQuery方法的位置。我已经看过FromSql的各种实现,但是我不相信这对我有用,因为我想返回 int ,而FromSql返回 TEntity


  

“ DatabaseFacade”不包含“ SqlQuery”的定义,并且没有   可访问的扩展方法'SqlQuery',它接受第一个参数   可以找到“ DatabaseFacade”类型(您是否缺少使用   指令还是程序集引用?)


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;
        }

0 个答案:

没有答案