实体命令执行异常
Entity Command Execution Exception
编译时出现实体命令执行异常。同一行代码在其他地方工作正常,但在适当的地方我需要它 returns 这个异常。
//Working fine here!
Questionnaire questionnaireeeee = context.Set<Questionnaire>().Include(q => q.QuestionnaireQuestions.Single(q => q.ID == 1);
//need to see who is logged in, administrator or professor
string userId = User.Identity.GetUserId();
//...
if(User.IsInRole("Administrator"))
{
//grouping subject instances by same semester
var subjectInstancesBySemester = from subjectInstances in context.SubjectInstances group subjectInstances by subjectInstances.Semester;
foreach (var subjectInstancesGroup in subjectInstancesBySemester)
{
// getting questionnaire related to this semester
if(subjectInstancesGroup.Key.QuestionnaireID != null)
{
//Exception is here!
Questionnaire questionnaire = context.Set<Questionnaire>().Include(q => q.QuestionnaireQuestions).Single(q => q.ID == (int) subjectInstancesGroup.Key.QuestionnaireID);
//...
}
}
}
然后断点查看,subjectInstancesGroup.Key.QuestionnaireID值为1,table问卷中有一行ID为1,问题出在哪里?
Entity framework 可能无法编译你给他的表达式树。
添加 .ToArray() 是否解决了问题?
var subjectInstancesBySemester =
from subjectInstances in context.SubjectInstances
group subjectInstances by subjectInstances.Semester;
foreach (var subjectInstancesGroup in subjectInstancesBySemester.ToArray())
{
// getting questionnaire related to this semester
if(subjectInstancesGroup.Key.QuestionnaireID != null)
{
var questionnaireId = (int) subjectInstancesGroup.Key.QuestionnaireID;
Questionnaire questionnaire = context.Set<Questionnaire>().Include(q =>
q.QuestionnaireQuestions).Single(q => q.ID == questionnaireId);
//...
}
}
通过添加 .ToArray() 可以对数据库执行查询。 Entity framework 现在不需要在更复杂的查询中编译它。当您以任何方式迭代整个返回集时,我认为这不会成为问题。
编译时出现实体命令执行异常。同一行代码在其他地方工作正常,但在适当的地方我需要它 returns 这个异常。
//Working fine here!
Questionnaire questionnaireeeee = context.Set<Questionnaire>().Include(q => q.QuestionnaireQuestions.Single(q => q.ID == 1);
//need to see who is logged in, administrator or professor
string userId = User.Identity.GetUserId();
//...
if(User.IsInRole("Administrator"))
{
//grouping subject instances by same semester
var subjectInstancesBySemester = from subjectInstances in context.SubjectInstances group subjectInstances by subjectInstances.Semester;
foreach (var subjectInstancesGroup in subjectInstancesBySemester)
{
// getting questionnaire related to this semester
if(subjectInstancesGroup.Key.QuestionnaireID != null)
{
//Exception is here!
Questionnaire questionnaire = context.Set<Questionnaire>().Include(q => q.QuestionnaireQuestions).Single(q => q.ID == (int) subjectInstancesGroup.Key.QuestionnaireID);
//...
}
}
}
然后断点查看,subjectInstancesGroup.Key.QuestionnaireID值为1,table问卷中有一行ID为1,问题出在哪里?
Entity framework 可能无法编译你给他的表达式树。
添加 .ToArray() 是否解决了问题?
var subjectInstancesBySemester =
from subjectInstances in context.SubjectInstances
group subjectInstances by subjectInstances.Semester;
foreach (var subjectInstancesGroup in subjectInstancesBySemester.ToArray())
{
// getting questionnaire related to this semester
if(subjectInstancesGroup.Key.QuestionnaireID != null)
{
var questionnaireId = (int) subjectInstancesGroup.Key.QuestionnaireID;
Questionnaire questionnaire = context.Set<Questionnaire>().Include(q =>
q.QuestionnaireQuestions).Single(q => q.ID == questionnaireId);
//...
}
}
通过添加 .ToArray() 可以对数据库执行查询。 Entity framework 现在不需要在更复杂的查询中编译它。当您以任何方式迭代整个返回集时,我认为这不会成为问题。