我正在使用WPF和实体框架6编写课程选择程序。在我的数据库中,我有三个表,一个用于希望选择课程的学生,一个用于有关课程的信息(课程名称,开始时间等)和一个关于教师的信息。我在我的程序中有一个部分列出了所有课程以及每个课程的相应数据,但由于教师存在于不同的表中,我无法在ListView中显示它们,换句话说我在加入两个数据时遇到问题表并在单个ListView中显示它们:
这是我在ListView中显示课程数据的代码,到目前为止,由于上述问题,我无法向教师展示
private void button_Click(object sender, RoutedEventArgs e)
{
using (var context = new Model1Container())
{
var course_List = new List<course>();
foreach (var course in context.courses)
{
course_List.Add(course);
}
listView.ItemsSource = course_List;
}
}
答案 0 :(得分:0)
splice
和Course
之间存在一对多关系,因此,Instructor
个实体,您可以使用名为Course
的{{3}}显示相关讲师。
现在我的第一个建议是你不需要遍历所有课程来创建一个列表,你可以这样做:
instructor
navigation property扩展程序允许您在查询中包含要包含在查询结果中的相关对象。
现在,要查看 using (var context = new Model1Container())
{
var course_List = context.courses.Include(c=>c.instructor).ToList();
listView.ItemsSource = course_List;
}
信息以及相关的Course
,您可以定义自定义Include。正如我之前所说,Instructor
是instructor
属性,因此,你可以这样做。
Course
答案 1 :(得分:0)
我认为在课程表中使用InsctruorId并使用下面的代码加入tabes是很好的
private void button_Click(object sender, RoutedEventArgs e)
{
using (var context = new Model1Container())
{
var course_List = new List<course>();
foreach (var course in GetAllCources)
{
course_List.Add(course);
}
listView.ItemsSource = course_List;
}
}
private List<course> GetAllCources()
{
return (from c in context.cources
join i in context.instructors on c.instructorId equals c.Id
select new
{
Cources = c,
Instructors = i,
}).AsEnumerable().Select(c => new Cources
{
.
.
All required fields
.
.
.
} : null).AsQueryable();
}
如果您不想选择属性,可以使用包含。