Vb.net EF6-向动态表添加对象

Vb.net EF6-向动态表添加对象,vb.net,entity-framework,devexpress-windows-ui,Vb.net,Entity Framework,Devexpress Windows Ui,我是新来的(我知道这个网站很久了,但这是我第一次问一些问题) 我正在使用的组件:-EF6、Devexpress XtraGrid 好的。。。所以,我想做的就是这样做, 我有一个包含多个表的表单,我必须能够从每个表的导航栏中添加和删除这些表 我知道怎么做,我只需要一个方法来跳过选择的案例 这里有一些代码 Private Sub ListChanged(sender As Object, e As System.ComponentModel.ListChangedEventArgs) If

我是新来的(我知道这个网站很久了,但这是我第一次问一些问题)

我正在使用的组件:-EF6、Devexpress XtraGrid

好的。。。所以,我想做的就是这样做, 我有一个包含多个表的表单,我必须能够从每个表的导航栏中添加和删除这些表

我知道怎么做,我只需要一个方法来跳过选择的案例

这里有一些代码

Private Sub ListChanged(sender As Object, e As System.ComponentModel.ListChangedEventArgs)
    If e.ListChangedType = System.ComponentModel.ListChangedType.ItemAdded Then
        Dim bList As BindingList(Of Object) = TryCast(sender, BindingList(Of Object))
        Dim m As Object = bList.LastOrDefault()
        If m IsNot Nothing Then
            Select Case _curentPageIndex
                Case 0 : db.GESTARM.Add(m)
                Case 1 : 'Other table add
                Case 2 : 'Other table add
            End Select
        End If
    End If
End Sub
我想做的是:

Private Sub ListChanged(sender As Object, e As System.ComponentModel.ListChangedEventArgs)
    If e.ListChangedType = System.ComponentModel.ListChangedType.ItemAdded Then
        Dim bList As BindingList(Of Object) = TryCast(sender, BindingList(Of Object))
        Dim m As Object = bList.LastOrDefault()
        'somehow get the table (type) of the entry through the m object
        If m IsNot Nothing Then
            db.<Table>.Add(m)
        End If
    End If
End Sub
如何在VB中实现这一点

编辑2: 好的,我让它像这样工作

Public Class GenericRepository(Of T As Class)
现在我的问题是如何从对象中获取类型

Private Sub ListChanged(sender As Object, e As System.ComponentModel.ListChangedEventArgs)
    If e.ListChangedType = System.ComponentModel.ListChangedType.ItemAdded Then
        Dim bList As BindingList(Of Object) = TryCast(sender, BindingList(Of Object))
        Dim m As Object = bList.LastOrDefault()
        Dim myType As Type = m.GetType()
        Dim table As New GenericRepository(Of myType)(db) 'Doesn't accept myType here...
        table.Insert(m)
    End If
End Sub

在马克的帮助下,我终于成功了

Private Sub ListChanged(sender As Object, e As System.ComponentModel.ListChangedEventArgs)
  If e.ListChangedType = System.ComponentModel.ListChangedType.ItemAdded Then
      Dim m As Object = sender(sender.count - 1)
      db.Set(m.GetType()).Add(m)
  End If 
End Sub

谢谢大家的帮助

欢迎来到SO!你的英语很好,你的问题解释得很好,所以工作做得很好。这个问题以前提过好几次。这些能解决你的问题吗?好吧,我想我必须坚持我从那些帖子中读到的精选案例,英孚不喜欢动态的东西。。。无论如何,谢谢你的帮助,如果有人知道如何更好地实现这一点,我洗耳恭听。你可以在数据集级别添加实体,但是你必须自己做很多处理。@develsuichiro我不能在这个项目上使用数据集,只需将网格绑定到它就很容易了(DevExpress在数据集方面创造奇迹)但是我不能在这里使用它。对不起,谢谢你的建议。变量的类型是什么?
Private Sub ListChanged(sender As Object, e As System.ComponentModel.ListChangedEventArgs)
  If e.ListChangedType = System.ComponentModel.ListChangedType.ItemAdded Then
      Dim m As Object = sender(sender.count - 1)
      db.Set(m.GetType()).Add(m)
  End If 
End Sub