我试图从整个EF中获取MSSQL数据库中的数据。
请参阅以下代码:
model.events =
_FoxDB.DWH_EventsBasicData.Where(
e => e.Event_StartTime >= model.StartDate && e.Event_EndTime <= model.EndDate).ToList();
model.Tps = _FoxDB.DWH_TrainingProgramsBasicData.Where(
t => model.events.Any(e => e.EventTrainingProgram_ID.Equals(t.TrainingProgramID))).Select(t => new EntityDropDown()
{
ID = t.TrainingProgramID,
Name = t.TrainingProgramName
}).ToList();
在第一行我得到的事件列表&gt;该部分工作正常,我也将其转换为ToList
,因此它将在本地运行。
我想获得事件集合中存在的培训计划列表。
关于这个错误和文章我读的答案很少,但我仍然不了解这个问题。
错误:Unable to create a constant value of type 'FoxConcept.Models.DALModels.DWH_EventBasicData'. Only primitive types or enumeration types are supported in this context
任何帮助表示感谢。
答案 0 :(得分:1)
据我所知此错误是因为您将model.events
加载到内存中,然后尝试在查询数据库时使用它。我不确定,但它应该适合你:
model.Tps = _FoxDB.DWH_TrainingProgramsBasicData
.AsEnumerable() // I added this
.Where(t =>
model.events
.Any(e => e.EventTrainingProgram_ID.Equals(t.TrainingProgramID)))
.Select(t => new EntityDropDown()
{
ID = t.TrainingProgramID,
Name = t.TrainingProgramName
}).ToList();