Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何修复此sql查询_C#_Sql Server - Fatal编程技术网

C# 如何修复此sql查询

C# 如何修复此sql查询,c#,sql-server,C#,Sql Server,此查询在SQLServerManagementStudio中运行良好。 但当我试图用C#运行此查询时,它会出现一个异常,请帮助我 我尝试过很多事情,但都无法解决这个问题 SQL查询 set @LATITUDE=12 set @LONGITUDE=12 Select * FROM [ChefODine].[dbo].[User] Inner Join [ChefODine].[dbo].[Address] on [ChefODine].[dbo].[User].AID=Address.ID WH

此查询在SQLServerManagementStudio中运行良好。 但当我试图用C#运行此查询时,它会出现一个异常,请帮助我

我尝试过很多事情,但都无法解决这个问题

SQL查询

set @LATITUDE=12 
set @LONGITUDE=12
Select * FROM [ChefODine].[dbo].[User] Inner Join [ChefODine].[dbo].[Address] on [ChefODine].[dbo].[User].AID=Address.ID
WHERE AID IN (
SELECT Top 5 ID
FROM [ChefODine].[dbo].[Address]
ORDER BY (ABS(ABS(LAT)-ABS(@LATITUDE)))+ABS(ABS(Lng)-ABS(@LONGITUDE)))
C#代码

例外情况如下:

“消息”:“发生错误。”, “ExceptionMessage:“'ObjectContent'1'类型未能序列化内容类型'application/json;charset=utf-8'的响应正文。”, “异常类型”:“System.InvalidOperationException”, “StackTrace”:空, “内部异常”:{ “消息”:“发生错误。”, “ExceptionMessage”:“数据读取器与指定的“ChefODineModel.User”不兼容。“Date\u time”类型的成员在数据读取器中没有同名的对应列。”, “ExceptionType”:“System.Data.Entity.Core.EntityCommandExecutionException”, “StackTrace”:“位于System.Data.Entity.Core.Query.InternalTrees.ColumnMapFactory.GetMemberOrdinalFromReader(DbDataReader storeDataReader,EdmMember成员,EdmType currentType,字典的2重命名列表)\r\n位于System.Data.Entity.Core.Query.InternalTrees.ColumnMapFactory.GetColumnMapsForType(DbDataReader storeDataReader,EdmType EdmType,字典的2重命名列表)\r\n位于System.Data.Entity.Core.Query.InternalTrees.ColumnMapFactory.CreateColumnMapFromReaderAndType(DbDataReader storeDataReader,EdmType EdmType,EntitySet EntitySet,字典的2重命名列表)\r\n位于System.Data.Entity.Core.Objects.ObjectContext.InternalTranslate[TElement](DbDataReader阅读器,字符串entitySetName,MergeOption MergeOption,布尔流,EntitySet和EntitySet,TypeUsage和edmType)\r\n位于System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](字符串命令文本,字符串entitySetName,ExecutionOptions ExecutionOptions,对象[]参数)\r\n位于System.Data.Entity.Core.Objects.ObjectContext.c__DisplayClass65'1.b__64()\r\n位于System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func'1 Func,IDbExecutionStrategy executionStrategy,Boolean startLocalTransaction,Boolean releaseConnectionOnSuccess)\r\n在System.Data.Entity.Core.Objects.ObjectContext.c__DisplayClass65'1.b__63()\r\n在System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func'1操作)在System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](字符串commandText,字符串entitySetName,ExecutionOptions ExecutionOptions,Object[]参数)\r\n位于System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](字符串commandText,字符串entitySetName,ExecutionOptions ExecutionOptions,Object[]参数)\r\n在System.Data.Entity.Internal.Linq.InternalSet'1.c__DisplayClass11.b__10()\r\n在System.Data.Entity.Internal.LazyEnumerator'1.MoveNext()\r\n在Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter-writer,IEnumerable-values,JsonArrayContract-contract,JsonProperty成员,JsonContainerContract-collectionContract,JsonProperty-containerProperty)\r\n位于Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter编写器,对象值,JsonContract valueContract,JsonProperty成员,JsonContainerContract containerContract,JsonProperty containerProperty)\r\n位于Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter JsonWriter,对象值,类型objectType)\r\n位于Newtonsoft.Json.JsonSerializer.serializer\n(JsonWriter JsonWriter,对象值,类型objectType)\r\n位于System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStream(类型,对象值,流writeStream,编码有效编码)\r\n位于System.Net.Http.Formatting.JsonMediaTypeFormatter.WriteToStream(类型,对象值,流writeStream writeStream,编码有效编码)\r\n位于System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStream(类型、对象值、流writeStream、HttpContent内容)\r\n位于System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStreamAsync(类型类型、对象值、流writeStream、HttpContent内容、TransportContext TransportContext、CancellationToken CancellationToken)\r\n--从引发异常的上一个位置开始的堆栈结束跟踪---\r\n在System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务任务)\r\n位于System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n位于System.Web.Http.WebHost.HttpControllerHandler.d_u1b.MoveNext()

“数据读取器与指定的 “ChefODineModel.User”。类型为“Date\u time”的成员不会 在数据读取器中具有同名的对应列。“

无法使用ChefODineModel.user映射用户对象,因为Dto模型中不存在日期时间。 此外,当必须将数据传递到查询中时,还可以使用SqlParameter

public HttpResponseMessage getNearByChef(double lat, double lng)
        {
            string query = @"Select u.* FROM [ChefODine].[dbo].[User] u
                             Inner Join [ChefODine].[dbo].[Address] on [ChefODine].[dbo].[User].AID=Address.ID 
                             WHERE AID IN( SELECT Top 5 ID FROM[ChefODine].[dbo].[Address] ORDER BY(ABS(ABS(LAT) - ABS(@LATITUDE))) + ABS(ABS(LATITUDE) - ABS(@LONGITUDE)))";
            var user = db.Users.SqlQuery(query, new SqlParameter("@LATITUDE", lat), new SqlParameter("@LONGITUDE", lng)).ToList();
            return Request.CreateResponse(HttpStatusCode.OK, user);
        }

请提供一个例外情况,以便我们可以帮助您。@ArturMichajluk Doneffirst off,Apil愚人特效令人惊叹。我投票让它们成为新标准。但对于您的问题..首先,请使用StringBuilder或“$”运算符…但是您得到了什么错误?您还可以提供查询的示例输出吗?
用户
上的值是多少?它表示JSON格式化程序无法处理从用户到JSON的格式数据。您必须以字符串的形式提供日期时间字段。其他选项是转换为历元日期格式。它给出了一个异常无法绑定多部分标识符“ChefODine.dbo.User.AID”。能否发布类ChefODine.dbo.User?和ChefODineModel.User
public HttpResponseMessage getNearByChef(double lat, double lng)
        {
            string query = @"Select u.* FROM [ChefODine].[dbo].[User] u
                             Inner Join [ChefODine].[dbo].[Address] on [ChefODine].[dbo].[User].AID=Address.ID 
                             WHERE AID IN( SELECT Top 5 ID FROM[ChefODine].[dbo].[Address] ORDER BY(ABS(ABS(LAT) - ABS(@LATITUDE))) + ABS(ABS(LATITUDE) - ABS(@LONGITUDE)))";
            var user = db.Users.SqlQuery(query, new SqlParameter("@LATITUDE", lat), new SqlParameter("@LONGITUDE", lng)).ToList();
            return Request.CreateResponse(HttpStatusCode.OK, user);
        }