2013-01-31 35 views
2

我想檢索每個列的名稱和數據類型,然後檢查列是否是外鍵,然後查詢他們的關係表的關係!可以做?我GOOGLE了3天我知道我必須使用映射模型或反射或兩者,,,但我不能這樣做。檢索數據庫模式Linq to SQL VB.Net

我將簡化我需要什麼假設:在TABLE0 TABLE1 HASE外鍵(COL3)是指主鍵(COL1):

  1. 迭代表1的列檢查每個列,如果它是一個外鍵(還可以得到它的數據類型)

  2. 獲取的關係來確定關聯表(TABLE0)

  3. 檢索主鍵的表(TABLE0)

+0

你想要達到什麼目的?你想加入數據?或者乾脆知道相關表是什麼? (例如,要獲取該數據,要顯示下拉列表或其他內容。)請嘗試編輯您的問題,而不要使用許多感嘆號和問號。這聽起來不錯,聽起來非常大喊大叫,絕望。 – Styxxy

+0

是的,我需要知道什麼是相關的表。那麼我想檢索相關表的數據。 –

回答

1

我得到了它 我作出這樣的返回每個外鍵的類型和相關的表類型

Private Function GetForeignKeyTables(ByVal myTableType As Type) As List(Of myForeignKeys) 

    Dim myDx = New Tester.DataClasses1DataContext 
    Dim mymodel As New AttributeMappingSource 

    Dim myAsociations = mymodel.GetModel(GetType(DataClasses1DataContext)).GetTable(myTableType).RowType.Associations 

    Dim asc = From m In myAsociations Where m.IsForeignKey 
       Select New myForeignKeys With {.KeyDataType = m.ThisKey.First.DbType, .RelatedTableType = m.OtherType} 

    Return asc.ToList 

End Function 

Private Class myForeignKeys 
    Property KeyDataType As String 
    Property RelatedTableType As MetaType 

End Class 

但我仍然需要從這些相關的表中檢索數據的功能。

我的意思是如何從它的MetaType變量創建一個類的實例?

+0

[已解決]我可以通過使用datacontext gettable方法得到一個表。 Dim table = myDx.GetTable( .GetType) –