如何将实体框架对象绑定到listview

时间:2012-08-12 18:48:57

标签: asp.net .net entity-framework

这是第一次在这里问,所以请帮我传达一下我的意思。

首先我使用了一个实体框架,我想创建一个从3个表中检索数据的查询,然后将结果绑定到列表视图,这里的问题是页面上没有任何内容。这就是我所做的:

ITIEntities MyContext = new ITIEntities();
var Courses = MyContext.Courses;
var Instructors = MyContext.Instructors;
var Ins_Courses = MyContext.Ins_Course;
var Query= from Crs in Courses
           from Ints in Instructors
           from Instructor_courses in Ins_Courses
           where Crs.Crs_Id==Instructor_courses.Crs_Id
           && Instructor_courses.Ins_Id== Ints.Ins_Id
           select new 
           {
               Name=  Ints.Ins_Name,
               Salary=Ints.Salary,
               ListOfCourses=Crs.Crs_Name,
           };
MyListView.DataSource = Query;
MyListView.DataBind();            

MyContext.SaveChanges();

1 个答案:

答案 0 :(得分:1)

这里的问题是可枚举的类型变量查询所以如果你想将结果绑定到listview,你必须为你想要显示的每一列定义具有getter和setter属性的实体公共类。

public Class ClassNameEntity
{

public string Name {get; set;}

}

在linq查询中使用以下

 select new ClassNameEntity
{
Name= Ints.Ins_Name

}.ToList();

将返回您定义的类对象列表的列表,以便直接绑定上层查询的结果。

ITIEntities MyContext = new ITIEntities();
            var Courses = MyContext.Courses;
            var Instructors = MyContext.Instructors;
            var Ins_Courses = MyContext.Ins_Course;
            List<ClassNameEntity> Query= from Crs in Courses
                       from Ints in Instructors
                       from Instructor_courses in Ins_Courses
                       where Crs.Crs_Id==Instructor_courses.Crs_Id
                       && Instructor_courses.Ins_Id== Ints.Ins_Id
                       select new ClassNameEntity
                       {
                           Name=  Ints.Ins_Name,
                           Salary=Ints.Salary,
                           ListOfCourses=Crs.Crs_Name,
                       }.ToList();
            MyListView.DataSource = Query;
            MyListView.DataBind();            

                MyContext.SaveChanges();