我在Vb.net上使用实体Framework 6。
在我的数据库中,我有2张学生表和结果。
在我的表格上,我插入了Studentbindingsource和Resultsbindingsource。
我有一个绑定到studentbindingsource的列表框和一个绑定到Resultsbindingsource的datagridview。
当用户从列表框中选择“学生”时,我想用学生结果填充datagridview。
在表单加载时,我用数据库中的所有数据填充Studentbindingsource:
context.Students.Load()
Studentbindingsource.Datasource=Context.Students.Local.TobindingList
现在,对于Resultsbindingsource,我希望具有以下逻辑: 如果已经填充了当前Student的Results集合(因为用户可能已经选择了另一个时间),则绑定源应该由已经加载的本地数据填充,否则应该从数据库加载。 我正在使用此代码:
If Not context.Entry(StudentBindingSource.Current).Collection("Results").IsLoaded Then context.Entry(StudentBindingSource.Current).Collection("Results").Load()
Me.ResultsBindingSource.DataSource = DirectCast(StudentBindingSource.Current, Student).Results.ToList
此代码有2个问题:
1)每次我使用此代码时,都会从数据库中进行读取。
2)对于ResultsBindingSource,我无法使用
Me.ResultsBindingSource.DataSource = DirectCast(StudentBindingSource.Current, Student).Local.tobindingList
.Local.tobindingList 在这种情况下不存在
我该怎么办? 谢谢!