如何从类型化linq查询行中找到底层db表名?



在VB.net中,我希望从运行时类型Linq查询行确定底层数据库表名称。我试图创建一个通用例程,用于删除列表框中的行,其对象值是查询行。我需要使用DeleteOnSubmit()获得实际的表名。当然,如果我硬编码表名,它工作得很好,但这是我试图避免的,以便我可以为许多列表框使用单个例程。我只是简单地钩住KeyUp事件。下面是我当前的代码:

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.SelectedItems(0)。GetType产生全名"DataAdmin.MenuCategory"。我要找的表名是menuccategories。"dbh"是dataContext限定符。

我希望我解释得足够好,有人可以帮助我。谢谢你!

我是否正确理解您正在查找的表名称取决于用户点击删除的列表框?那么,列表框LbxMenuItems与表"MenuItems"相关联,而列表框LbxCategories与表"MenuCategories"相关联?如果是这样的话,既然Sub是如此之小,为什么不只是有两个不同的Sub,其中一个处理LbxMenuItems。KeyUp和其他处理lbxcategories。KeyUp?然后,如果你想的话,你甚至可以自定义它们,比如说"Dim msg ="Delete"&lbx.SelectedItems.Count,"从菜单项中选择的行?",例如。还是我错过了什么?

相关内容

  • 没有找到相关文章

最新更新