使用LINQ在Windows窗体中显示多对多关系的数据

时间:2014-08-11 13:14:55

标签: c# winforms linq

我的数据库中存储了三个表:SpeakerLanguagelink_speaks。他们三个都有多个属性。 link_speaks用于将SpeakerLanguage“多对多”关系连接起来。主/外键关系在sql数据库中定义。

表信息: enter image description here

我希望Windows窗体能够在Speaker中为每个条目显示信息,并在其他两个表格中显示他/她所说语言的表格。

结果看起来很多like this(摘自我发现的this tutorial

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

在主页面上设置绑定导航器,使数据源为整个tbl_Personen。 然后将datagridview上的bindingsource设置为该person对象相关人员的语言......

这是第一部分的一些代码(它不完美,但你得到了一般的想法):

using (var data = yourdataentities())
{
   var person = data.Personen.FirstOrDefault();
   formbindingsource.DataSource = person;
   var languagesGuySpeaks = from p_x_l in data.link_spricht
                            join language in data.Sprachen on language.Id equals p_x_l.SprachID
                            where p_x_l.Person_ID == person.Id
                            select language;


   datagridbindingsource.DataSource = languagesGuySpeaks;
}

然后添加一个事件处理程序,以便在您的人员更改时更新datagridbindingsource.DataSource(但是您要处理它;如下拉列表或其他内容)