LINQ to Entities无法识别方法'System.String ToString()'。(LINQ to Entities does not recognize the

编程入门 行业动态 更新时间:2024-10-25 12:25:24
LINQ to Entities无法识别方法'System.String ToString()'。(LINQ to Entities does not recognize the method 'System.String ToString()'. Error happend when trying parse DateTime)

我正在尝试从实体查询中获取自定义数据集,但遗憾的是我收到以下错误:

LINQ to Entities无法识别System.String ToString()方法的方法,并且此方法无法转换为存储表达式。 这是返回数据的自定义类:

public class featuredlist { public string kodg { get; set; } public string excursion { get; set; } public string excursiondate { get; set; } } public IQueryable<featuredlist> GetFeatured(string fdate) { try { var fd = DateTime.Parse(fdate); var uname = HttpContext.Current.User.Identity.Name; var uid = (from x in db.xEmployee where x.Сотрудник.Contains(uname) select x.Kod).FirstOrDefault(); var fl = (from a in db.xGrafik join b in db.xExcursion on a.Excursion equals b.Kod join c in db.xDate on a.КодД equals c.Kod join d in db.xOrder on a.Kod equals d.КодГ where c.Дата == fd & d.Продал == uid orderby c.Дата descending select new featuredlist { kodg = a.Kod.ToString(), excursion = b.Название, //Probably error happend here. excursiondate = (c.Дата) != null ? c.Дата.Value.ToShortDateString : "01.01" }) .AsQueryable(); return fl.Distinct(); } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { var path = @"d:\error.txt"; using (StreamWriter sw = File.CreateText(path)) { sw.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); } using (StreamWriter sw1 = File.CreateText(@"d:\error1.txt")) foreach (var ve in eve.ValidationErrors) { sw1.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } throw; } }

异常消息:“LINQ to Entities无法识别方法'System.String ToString()'方法,并且此方法无法转换为存储表达式。” 堆栈跟踪:“System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.DefaultTranslator.Translate(ExpressionConverter parent,MethodCallExpression call) - System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate( ExpressionConverter parent,MethodCallExpression linq)System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator 1.Translate(ExpressionConverter parent, Expression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MemberInitTranslator.TypedTranslate(ExpressionConverter parent, MemberInitExpression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator вSystem.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MemberInitTranslator.TypedTranslate(ExpressionConverter parent, 1.Translate(ExpressionConverter parent, Expression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MemberInitTranslator.TypedTranslate(ExpressionConverter parent, MemberInitExpression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator вSystem.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator1.Translate(ExpressionConverter parent,表达式linq)System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)вSystem.Data.Entity.Core.Objects.ELinq.ExpressionC onverter.TranslateLambda(LambdaExpression lambda,DbExpression输入) - System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda,DbExpression输入,DbExpressionBinding和绑定),System.Data.Entity.Core.Objects.ELinq.ExpressionConverter .MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent,MethodCallExpression call,DbExpression&source,DbExpressionBinding&sourceBinding,DbExpression&lambda)System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SelectTranslator.Translate(ExpressionConverter parent,MethodCallExpression call) System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent,MethodCallExpression call,SequenceMethod sequenceMethod)System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent ,MethodCallExpression linq)вSystem.Da ta.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator 1.Translate(ExpressionConverter parent, Expression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateSet(Expression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.UnarySequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator 1.Translate(ExpressionConverter parent,Expression linq)вSystem.Data.Entity.C ore.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)вSystem.Data.Entity.Core.Objects.ELinq.ExpressionConverter.Convert()вSystem.Data.Entity.Core.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable 1 forMergeOption) в System.Data.Entity.Core.Objects.ObjectQuery 1。<> c__DisplayClassb.b__a()вSystem.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func 1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess) в System.Data.Entity.Core.Objects.ObjectQuery 1。<> c__DisplayClassb.b__9()вSystem.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func 1 operation) в System.Data.Entity.Core.Objects.ObjectQuery вSystem.Data 1 operation) в System.Data.Entity.Core.Objects.ObjectQuery 1.GetResults(Nullable 1 forMergeOption) в System.Data.Entity.Core.Objects.ObjectQuery вSystem.Data.Entity.Core.Objects.ObjectQuery1..GetEnumerator> b__0()вSystem.Lazy1.CreateValue()вSystem.Lazy1。 LazyInitValue() 1.get_Value() в System.Data.Entity.Internal.LazyEnumerator вSystem.Data.Entity.Internal.LazyEnumerator1.MoveNext()ñNe wtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer,IEnumerable values,JsonArrayContract contract,JsonProperty member,JsonContainerContract collectionContract,JsonProperty containerProperty)•Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer,Object value,JsonContract valueContract,JsonProperty member) ,JsonContainerContract containerContract,JsonProperty containerProperty)Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter,Object value,Type objectType)Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter,Object value,Type objectType)Newtonsoft.Json。 JsonSerializer.Serialize(JsonWriter jsonWriter,Object value)•System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStream(Type type,Object value,Stream writeStream,Encoding effectiveEncoding)System.Net.Http.Formatting.JsonMediaTypeFormatter.WriteToStream(Type type , 对象值,Stream writeStream,Encoding effectiveEncoding)System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStream(Type type,Object value,Stream writeStream,HttpContent content)System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStreamAsync(Type type, Object value,Stream writeStream,HttpContent content,TransportContext transportContext,CancellationToken cancellationToken)---Конецтрассировкастекаизпредыдущегорасположения,гдевозниклоисключение---вSystem.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)вSystem.Runtime。 CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) - System.Runtime.CompilerServices.TaskAwaiter.GetResult(),System.Web.Http.WebHost.HttpControllerHandler.d__1b.MoveNext()“

I'm trying to get custom set of data from entity query, but regratfully I'm getting the following error:

LINQ to Entities does not recognize the method System.String ToString() method, and this method cannot be translated into a store expression. Here is custome class to return data:

public class featuredlist { public string kodg { get; set; } public string excursion { get; set; } public string excursiondate { get; set; } } public IQueryable<featuredlist> GetFeatured(string fdate) { try { var fd = DateTime.Parse(fdate); var uname = HttpContext.Current.User.Identity.Name; var uid = (from x in db.xEmployee where x.Сотрудник.Contains(uname) select x.Kod).FirstOrDefault(); var fl = (from a in db.xGrafik join b in db.xExcursion on a.Excursion equals b.Kod join c in db.xDate on a.КодД equals c.Kod join d in db.xOrder on a.Kod equals d.КодГ where c.Дата == fd & d.Продал == uid orderby c.Дата descending select new featuredlist { kodg = a.Kod.ToString(), excursion = b.Название, //Probably error happend here. excursiondate = (c.Дата) != null ? c.Дата.Value.ToShortDateString : "01.01" }) .AsQueryable(); return fl.Distinct(); } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { var path = @"d:\error.txt"; using (StreamWriter sw = File.CreateText(path)) { sw.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); } using (StreamWriter sw1 = File.CreateText(@"d:\error1.txt")) foreach (var ve in eve.ValidationErrors) { sw1.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } throw; } }

Exception message: "LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression." Stack trace: " в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.DefaultTranslator.Translate(ExpressionConverter parent, MethodCallExpression call) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator1.Translate(ExpressionConverter parent, Expression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MemberInitTranslator.TypedTranslate(ExpressionConverter parent, MemberInitExpression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator1.Translate(ExpressionConverter parent, Expression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input, DbExpressionBinding& binding) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, DbExpression& source, DbExpressionBinding& sourceBinding, DbExpression& lambda) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SelectTranslator.Translate(ExpressionConverter parent, MethodCallExpression call) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator1.Translate(ExpressionConverter parent, Expression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateSet(Expression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.UnarySequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator1.Translate(ExpressionConverter parent, Expression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) в System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.Convert() в System.Data.Entity.Core.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable1 forMergeOption) в System.Data.Entity.Core.Objects.ObjectQuery1.<>c__DisplayClassb.b__a() в System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess) в System.Data.Entity.Core.Objects.ObjectQuery1.<>c__DisplayClassb.b__9() в System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func1 operation) в System.Data.Entity.Core.Objects.ObjectQuery1.GetResults(Nullable1 forMergeOption) в System.Data.Entity.Core.Objects.ObjectQuery1..GetEnumerator>b__0() в System.Lazy1.CreateValue() в System.Lazy1.LazyInitValue() в System.Lazy1.get_Value() в System.Data.Entity.Internal.LazyEnumerator1.MoveNext() в Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IEnumerable values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) в Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty) в Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType) в Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType) в Newtonsoft.Json.JsonSerializer.Serialize(JsonWriter jsonWriter, Object value) в System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStream(Type type, Object value, Stream writeStream, Encoding effectiveEncoding) в System.Net.Http.Formatting.JsonMediaTypeFormatter.WriteToStream(Type type, Object value, Stream writeStream, Encoding effectiveEncoding) в System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStream(Type type, Object value, Stream writeStream, HttpContent content) в System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStreamAsync(Type type, Object value, Stream writeStream, HttpContent content, TransportContext transportContext, CancellationToken cancellationToken) --- Конец трассировка стека из предыдущего расположения, где возникло исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) в System.Runtime.CompilerServices.TaskAwaiter.GetResult() в System.Web.Http.WebHost.HttpControllerHandler.d__1b.MoveNext()"

最满意答案

fl查询中的所有内容都必须可以转换为有效的SQL。 ToString不是,你必须使用SqlFunctions.StringConvert代替:

kodg = SqlFunctions.StringConvert(a.Kod),

或者,您可以先检索结果( AsEnumerable ),然后在inproc查询中进行项目( select )。

The problem was about custom class that must return custom data. When I change its to be as follow (DateTime? instead of string) it's working fine:

public class featuredlist { public int kodg { get; set; } public string excursion { get; set; } public DateTime? excursiondate { get; set; } }

更多推荐

本文发布于:2023-08-04 06:08:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1410192.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:无法识别   方法   System   String   Entities

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!