【发布时间】:2011-12-16 21:55:34
【问题描述】:
这是错误:无法创建类型为“mvcinfosite.ViewModels.GrpSearchHolder”的常量值。此上下文仅支持原始类型(“例如 Int32、String 和 Guid”)。
我该如何解决这个错误。 我做一个小例子来告诉你我的问题。在我的真实项目中,MyGrp1,MyGrp2,MyGrp3 被 ListBox 替换。我用它来过滤我的数据。
public class MyGroupHolder
{
public string GrpName { get; set; }
public List<int ?> ListSelectedGrpDescID { get; set; }
}
public ActionResult Index()
{
//Database Context
DBEntities db = EntityFactory.GetEntity();
//Variables
List<MyGroupHolder> ListGrpHolder = new List<MyGroupHolder>();
//Imagine a 3 listbox (MyGrp1,MyGrp2,MyGrp3)
//Each listbox contains selected value.
MyGroupHolder MyGrp1 = new MyGroupHolder();
MyGrp1.GrpName = "Grp 1 Test";
MyGrp1.ListSelectedGrpDescID = new List<int?>();
MyGrp1.ListSelectedGrpDescID.Add(55);
MyGroupHolder MyGrp2 = new MyGroupHolder();
MyGrp2.GrpName = "Grp 2 Test";
MyGrp2.ListSelectedGrpDescID = new List<int?>();
MyGrp2.ListSelectedGrpDescID.Add(56);
MyGroupHolder MyGrp3 = new MyGroupHolder();
MyGrp3.GrpName = "Grp 3 Test";
MyGrp3.ListSelectedGrpDescID = new List<int?>();
MyGrp3.ListSelectedGrpDescID.Add(57);
ListGrpHolder.Add(MyGrp1);
ListGrpHolder.Add(MyGrp2);
ListGrpHolder.Add(MyGrp3);
//Getting a list of Locations base on the Group Filter
var ListLocation = db.Locations.Where(p => ListGrpHolder.Any(pg => pg.ListSelectedGrpDescID.Count == 0 || p.GroupLocations.Select(sg => sg.GrpDescID).Intersect(pg.ListSelectedGrpDescID).Any())).ToList();
return View();
}
【问题讨论】:
标签: asp.net-mvc-2 entity-framework-4 linq-to-entities