Vb.net EF6-向动态表添加对象
我是新来的(我知道这个网站很久了,但这是我第一次问一些问题) 我正在使用的组件:-EF6、Devexpress XtraGrid 好的。。。所以,我想做的就是这样做, 我有一个包含多个表的表单,我必须能够从每个表的导航栏中添加和删除这些表 我知道怎么做,我只需要一个方法来跳过选择的案例 这里有一些代码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
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