错误:“;在此上下文中仅支持基元类型或枚举类型“;
本文关键字:类型 枚举 支持 上下文 错误 | 更新日期: 2023-09-27 18:20:07
浏览了相关帖子,但仍有困难。这是我的代码:
var id = Request.QueryString["id"].AsInt();
var accountNum = Request.QueryString["accountnum"];
var orderIDs = new List<OrderID>();
// Order IDs are in the form: OrderNum-OrderLine[,...]
// e.g. orderids=41417-6,36703-1
foreach (var orderID in Request.QueryString["orderids"].Split(',')) {
var components = orderID.Split('-');
orderIDs.Add(new OrderID() {
OrderNum = components[0].AsInt(),
OrderLine = components[1].AsInt()
});
}
var dbContext = new TelecomEntities();
var assignedLines = dbContext.LineAssignments
.Where(a => orderIDs
.Any(i => a.OrderNum == i.OrderNum && a.OrderLine == i.OrderLine))
.ToList();
运行此程序时,我得到错误:无法创建类型为"OrderID"的常量值。在此上下文中仅支持基元类型或枚举类型
根据我在其他文章中读到的内容,我无法执行查询,因为orderIDs
不在dbContent
上下文中。
编辑:订单ID类
public class OrderID
{
public int OrderNum { get; set; }
public int OrderLine { get; set; }
public OrderID() { }
}
问题是EF无法将与OrderID对象的比较转换为SQL。一种选择可能是将订单ID保留为字符串:
var id = Request.QueryString["id"].AsInt();
var accountNum = Request.QueryString["accountnum"];
string[] orderIDs;
// Order IDs are in the form: OrderNum-OrderLine[,...]
// e.g. orderids=41417-6,36703-1
orderIDs = Request.QueryString["orderids"].Split(',');
var dbContext = new TelecomEntities();
var assignedLines = dbContext.LineAssignments
.Where(a => orderIDs
.Any(on => on.Equals(a.OrderNum + "-" + a.OrderLine))
.ToList();
我打赌它是AsInt(我以前从未见过,但我看到它是网页的一部分)。
你明白前臂内部的错误吗?如果是这样的话,试试这个:
foreach (var orderID in testOrderIDs.Split(','))
{
var components = orderID.Split('-');
orderIDs.Add(new OrderID()
{
OrderNum = int.Parse(components[0]),
OrderLine = int.Parse(components[1])
});
}