我一直在关注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

10-08 13:54