如果加载了子集合,则使用本地数据,否则从数据库中读取

时间:2018-12-07 17:14:04

标签: vb.net entity-framework-6

我在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 在这种情况下不存在

我该怎么办? 谢谢!

0 个答案:

没有答案