c# – 不允许在查询中显式构造实体类型”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 不允许在查询中显式构造实体类型”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2165字,纯文字阅读大概需要4分钟。
内容图文
![c# – 不允许在查询中显式构造实体类型”](/upload/InfoBanner/zyjiaocheng/802/0afd3a14fb1c45c991abed1864222a72.jpg)
我收到以下错误
Explicit construction of entity type '...TableClassName' in query is not allowed.
Server stack trace:
at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter)
at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
这是我的代码.
tgdd = new List<TableClassName>();
context.DeferredLoadingEnabled = false;
var t = context.TableClassName.Where(...)
.GroupBy(g => new { g.Date, g.UserID })
.Select(g => new TableClassName
{
PK = 1,
Date = Convert.ToDateTime(g.Key),
Counted = g.Sum(x => x.Counted),
Time = g.Sum(x => x.Time),
MaxHR = g.Max(x => x.MaxHR),
PeakCal = g.Max(x => x.PeakCal),
PowerIndex = (g.Sum(x => x.PowerIndex)),
Target = g.Max(x => x.Target),
RepTotal = g.Sum(x => x.RepTotal),
Lifted = g.Sum(x => x.Lifted),
UserID = Convert.ToInt64(g.Key)
}).ToList();
foreach (TableClassName r in t)
{
tgdd.Add(r);
}
我没有语法错误.这是一个Web服务.我在调用它时遇到了问题.
解决方法:
考虑以下:
context.DeferredLoadingEnabled = false;
tgdd = context.TableClassName.Where(...)
.GroupBy(g => new { g.Date, g.UserID })
.AsEnumerable()
.Select(g => new TableClassName
{
PK = 1,
Date = Convert.ToDateTime(g.Key),
Counted = g.Sum(x => x.Counted),
Time = g.Sum(x => x.Time),
MaxHR = g.Max(x => x.MaxHR),
PeakCal = g.Max(x => x.PeakCal),
PowerIndex = (g.Sum(x => x.PowerIndex)),
Target = g.Max(x => x.Target),
RepTotal = g.Sum(x => x.RepTotal),
Lifted = g.Sum(x => x.Lifted),
UserID = Convert.ToInt64(g.Key)
}).ToList();
通过在Group操作之后调用AsEnumerable,我们强制将投影放入客户端的自定义类型,而不是服务器不知道您的自定义类型的服务器.此外,通过在查询上调用ToList,您无需迭代结果并将它们添加到另一个列表中.只需将第一个ToList的结果直接分配给要返回的对象即可.
内容总结
以上是互联网集市为您收集整理的c# – 不允许在查询中显式构造实体类型”全部内容,希望文章能够帮你解决c# – 不允许在查询中显式构造实体类型”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。