2012-05-18 74 views
-1
的查詢

我從Linq開始在VB.NET中使用SQL,並試圖找出如何對數據庫進行簡單查詢。 我想完全按照程序進行。VB.NET Linq to SQL - 來自表

我用連接字符串建立了數據庫的連接,這個工作正常 - 如果數據庫存在與否,我可以得到一條消息。 但是,當我想查詢一個表時,我缺少連接到表的部分。我已經搜索了很多找到答案,但

沒有運氣。任何人都可以將我指向正確的方向嗎?

代碼:

Dim strContactString, strDBServer, strDBName, strSQLUser, strSQLPW As String 

    strDBServer = "MyServer" 
    strDBName = "Northwind" 
    strSQLUser = "sa" 
    strSQLPW = "MyPW" 

    strContactString = "" 
    strContactString = strContactString & "data source=" & strDBServer & ";" 
    strContactString = strContactString & "initial catalog=" & strDBName & ";" 
    strContactString = strContactString & "user id=" & strSQLUser & ";" 
    strContactString = strContactString & "password=" & strSQLPW & ";" 

    Dim MyContext As New DataContext(strContactString) 

    'This works: 
    If MyContext.DatabaseExists Then 
     MsgBox("DB Exists") 
    Else 
     MsgBox("DB Does Not Exist") 
    End If 

    'This is the query I want to run (copied from samples I found) 
    Dim TEST = From c In MyContext.Customers _ 
    Select c.ContactName 

錯誤消息: '顧客' 不是 'System.Data.Linq.DataContext' 的構件。

回答

2

首先你不應該直接使用DataContext。

向項目中添加一個新的dbml文件並使用編輯器將其映射到數據庫(這意味着將visual studio連接到數據庫,然後將所需的表從服務器資源管理器拖到dbml編輯器中)。

這將爲您生成一個類,比如NortwindDataContext(您可以在編輯器的屬性窗格中控制此類)。

然後,您可以用它來編寫查詢:

Dim context As New DataContext(strContactString) 
Dim TEST = From c In context.Customers _ 
      Select c.ContactName 
+0

這聽起來不對。我從來沒有像這樣通過UI添加任何東西來連接到任何數據庫。你可以,但你不必。 – Yatrix

+0

如果你想正確使用LINQ to SQL,你必須做到這一點,因爲它基於強類型,這意味着它需要在設計時讀取數據庫以創建這些類。 – DamienG

+0

這就是他的代碼看起來像試圖實現的。這只是朝着類型安全的方向發展。我同意l2s編輯器不是有史以來最好的工具,但它爲小應用程序提供了工作。 – linkerro

0

http://msdn.microsoft.com/en-us/library/bb399375.aspx

「最好的做法是要申報的,而不是依靠基本DataContext類和GetTable方法的強類型的DataContext。強類型DataContext將所有Table集合聲明爲上下文的成員,如下例所示。「

只要數據庫連接正確,這可能是你的問題。