【发布时间】:2013-09-09 20:50:11
【问题描述】:
谁能告诉我为什么这在 LinqPad 中有效,但在我的应用程序中不能作为 C# 表达式?
我正在使用实体框架...
from p in Productions
join t in MaterialTransactions
on p.Prodn_ID equals t.Prodn_ID
where p.WO_ID == 2345
orderby p.Date descending
select new
{
Id = p.Prodn_ID,
Date = p.Date,
Line = (p.ProdLine.Factory.Factory_No + '/' + p.ProdLine.ProdLine_No.ToString()),
Qty = p.Qty,
Wgt = (double)p.ActWgt,
Speed = (double)p.ActSpeed,
MaterialUsed = t.Material.Name}
我收到System.Exception“无法创建类型为'System.Object'的常量值。在此上下文中仅支持原始类型或枚举类型。”
【问题讨论】:
-
在 LINQ Pad 中很可能使用 LINQ-to-Objects,而 LINQ-to-Entities 有不同的规则。语法相同,但它们的功能/实现不同。
-
ProdLine和Material列的SQL类型是什么? -
没有表格和数据我猜 Line=... 是问题所在,尝试将其注释掉,看看你会得到什么。
-
@Belogix LinqPad 使用 Linq-to-Sql,请参阅 linqpad.net/FAQ.aspx。
-
是的,这很奇怪——它只会在我尝试使用查询结果时抱怨。
标签: c# linq entity-framework