簡體   English   中英

如何從鍵入的linq查詢行中找到基礎數據庫表名稱?

[英]How can I find the underlying db table name from a typed linq query row?

在VB.net中,我希望從運行時類型Linq查詢行中確定基礎數據庫表名稱。 我正在嘗試創建一個通用例程,以刪除其對象值為查詢行的ListBoxes中的行。 我需要使用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 我要查找的表名稱是MenuCategories。 “ dbh”是dataContext限定符。

我希望我對這一點的解釋足夠好,以便有人嘗試提供幫助。 謝謝!

我是否正確理解您要查找的表名稱取決於用戶在其中單擊Delete的列表框? 那么,列表框LbxMenuItems與表“ MenuItems”相關聯,而列表框LbxCategories與表“ MenuCategories”相關聯嗎? 如果是這樣的話,由於Sub很小,為什么不只擁有2個不同的Sub,其中一個處理LbxMenuItems.KeyUp,另一個處理LbxCategories.KeyUp? 然后,您甚至可以根據需要進一步自定義它們,例如說“ Dim msg =“ Delete”&lbx.SelectedItems.Count&“從菜單項中選擇的行?”。還是我錯過了什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM