Vb.net 如何从类型化的linq查询行中找到基础db表名?
在VB.net中,我希望从运行时类型Linq查询行确定底层数据库表名。我试图创建一个通用例程来删除列表框中的行,其对象值是查询行。我需要使用DeleteOnSubmit的实际表名。当然,如果我硬编码表名,它工作得很好,但这正是我试图避免的,这样我就可以对许多列表框使用单个例程。我只是简单地连接KeyUp事件。以下是我当前的代码:Vb.net 如何从类型化的linq查询行中找到基础db表名?,vb.net,linq,database-schema,datacontext,gettype,Vb.net,Linq,Database Schema,Datacontext,Gettype,在VB.net中,我希望从运行时类型Linq查询行确定底层数据库表名。我试图创建一个通用例程来删除列表框中的行,其对象值是查询行。我需要使用DeleteOnSubmit的实际表名。当然,如果我硬编码表名,它工作得很好,但这正是我试图避免的,这样我就可以对许多列表框使用单个例程。我只是简单地连接KeyUp事件。以下是我当前的代码: Private Sub LbxMenuItems_KeyUp(sender As Object, e As KeyEventArgs) Handles LbxMenuI
Private Sub LbxMenuItems_KeyUp(sender As Object, e As KeyEventArgs) Handles LbxMenuItems.KeyUp, LbxCategories.KeyUp
Dim lbx = DirectCast(sender, ListBox)
If e.KeyCode = Keys.Delete Then
Dim msg = "Delete " & lbx.SelectedItems.Count & " selected rows(s)?"
If MsgBox(msg, MsgBoxStyle.YesNo + MsgBoxStyle.Exclamation) <> vbYes Then Exit Sub
Dim lbxType As Type = lbx.SelectedItems(0).GetType
For Each sel In lbx.SelectedItems
dbh.MenuItems.DeleteOnSubmit(sel) <--- "MenuItems" IS THE TBL NAME I NEED Next
dbh.SubmitChanges()
End If
End Sub
例如:
lbx.SelectedItems0.GetType生成全名DataAdmin.MenuCategory。
我要查找的表名是MenuCategories。dbh是dataContext限定符
我希望我能很好地解释这一点,以便有人能够提供帮助。谢谢大家! 我认为您要查找的表名取决于用户点击“删除”的列表框,对吗?那么,列表框LbxMenuItems与表MenuItems关联,而列表框LbxCategories与表MenuCategories关联?如果是这样的话,既然Sub很小,为什么不只拥有两个不同的Sub,其中一个处理LbxMenuItems.KeyUp,另一个处理LbxCategories.KeyUp?然后,如果需要,您甚至可以对它们进行更多的自定义,例如说Dim msg=Delete&lbx.SelectedItems.Count&selected rows from Menu Items。还是我遗漏了什么?Hi@Andarta:谢谢你的回复。当然,我可以为所有10个左右的列表框设置一个sub,但这正是我想要回避的。此外,名单还在不断增加,解决这一问题将为今后更多的可能性打开大门。即使现在,我仍然可以自定义消息,如果需要,可以使用GetType.Name。获取基础表的名称是现在解决此问题的关键。但谢谢你的意见