C# 如何修复此sql查询
此查询在SQLServerManagementStudio中运行良好。 但当我试图用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
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);
}