2012-05-18 58 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集合声明为上下文的成员,如下例所示。“

只要数据库连接正确,这可能是你的问题。