我一直在尝试在变量中存储一个值,这取决于从数据库返回的值。 基本上,我希望它根据房间类型计算房间数量,并将其存储在一个变量中以便在其他地方使用。
我拥有的是:
DLDbContext context = new DLDbContext();
//Counts how many versions of that room exists
int RoomTypes = (from u in context.Room where u.type == ddlRoomType.SelectedItem.ToString() select u).Count();
出现的错误是:
无法创建类型的常量值 'System.Web.UI.WebControls.ListItem'。只有原始类型或 在此上下文中支持枚举类型。
ddlRoomType是一个下拉列表,其中人员可以选择房间类型,并根据他们选择的内容,通过数据库搜索实际存在的房间数量。
答案 0 :(得分:1)
这是因为您在此行中隐式使用LINQ to Entities
:
(from u in context.Room where u.type == ddlRoomType.SelectedItem.ToString() select u).Count()
LINQ to Entities
需要将您的代码转换为SQL。为此,ddlRoomType.SelectedItem.ToString()
需要转换为constant
,以便它可以包含在SQL中。实体框架无法将其转换为常量,特别是因为它不知道toString
方法中发生了什么样的处理。你懂这个了吗? toString()
方法需要由C#进行评估,而不进行评估,它不能成为常量,因此它可以包含在SQL中。
请改为尝试:
DLDbContext context = new DLDbContext();
//Counts how many versions of that room exists
var roomType = ddlRoomType.SelectedItem.ToString();
int RoomTypes = (from u in context.Room where u.type == roomType select u).Count();