Vb.net 向绑定的DataGridView添加新实体

Vb.net 向绑定的DataGridView添加新实体,vb.net,entity-framework,Vb.net,Entity Framework,我有公司和合同的父子关系,在winforms应用程序的两个DataGridView中显示。它们都绑定到实体模型集合 如何添加新合同 如果我这样做 Dim c as Company = CompaniesBindingSource.Current c.contracts.Add(New Contract()) context.SaveChanges() 网格不刷新(即使我在BindingSource上调用.refresh()或.ResetBindings()。我必须离开选定的公司并返回到该公司,

我有
公司
合同
的父子关系,在winforms应用程序的两个DataGridView中显示。它们都绑定到实体模型集合

如何添加新合同

  • 如果我这样做

    Dim c as Company = CompaniesBindingSource.Current
    c.contracts.Add(New Contract())
    context.SaveChanges()
    
    网格不刷新(即使我在BindingSource上调用
    .refresh()
    .ResetBindings()
    。我必须离开选定的公司并返回到该公司,网格才能刷新

  • 如果我执行了
    ContractsBindingSource.AddNew()
    ,网格将刷新,但数据不会保留到实体上下文中

  • 注意:我的合同集合是我的
    公司
    型号上的一个属性:

    Public ReadOnly Property activeContracts As SortableBindingList(Of Contract)
        Get
            Dim list = New SortableBindingList(Of Contract)
    
            For Each contract As Contract In contracts.Where(Function(c) c.isActive).ToList
                list.Add(contract)
            Next
    
            Return list
        End Get
    End Property
    
    这与此有关吗?我如何强制属性重新计算?

    这对我很有用:

    CompaniesBindingSource.ResetCurrentItem()
    
    这将重新计算
    Contracts
    属性,并自动刷新Contracts网格