我一直在关注Microsoft的walkthrough on how to use Entity Framework,但在尝试将查询结果放入组合框时出现以下异常:
“无法转换类型的对象
'system.data.entity.infrastructure.dbquery`1[schoolef.department]'到
键入“system.data.entity.core.objects.objectquery”。
在stackoverflow上搜索之后,我找到了一个类似问题的答案,但是我不知道如何使用程序上下文中给出的解决方案,因为execute不在DbQuery
中,我需要一个dbcontext来访问数据库。
下面是相关代码,其中schoolEntities扩展了dbContext,departmentList是一个组合框。
private void CourseViewer_Load(object sender, EventArgs e)
{
schoolContext = new SchoolEntities();
var departmentQuery = from d in schoolContext.Departments.Include("Courses")
orderby d.Name
select d;
this.departmentList.DisplayMember = "Name";
this.departmentList.DataSource = ((ObjectQuery)departmentQuery).Execute(MergeOption.AppendOnly);
}
最佳答案
这应该有效:
//...
this.departmentList.DataSource =departmentQuery.ToList();
设置
DataSource
不需要执行该转换。只需调用ToList
扩展方法来具体化查询结果。您还应该设置ValueMember
:this.departmentList.ValueMember = "Id";// PK of department entity