2

我是一个新的 linq to sql 学习者,这是我第一次尝试创建数据查看器程序。这个想法很简单,我想创建一个能够查看数据库中表内容的软件。就是这样。

我已经在这里遇到了一个早期问题,我在网上看到了很多教程和文章,但我仍然无法修复这个错误。

这是我的代码:

    static void Main(string[] args)
    {
        string cs = "Data Source=localhost;Initial Catalog=somedb;Integrated Security=SSPI;";

        var db = new DataClasses1DataContext(cs);
        db.Connection.Open();

        foreach (var b in db.Mapping.GetTables())
            Console.WriteLine(b.TableName);

        Console.ReadKey(true);
    }

当我试图检查db.connection.equals(null);它返回时false,我认为我已经成功连接到数据库,因为根本没有错误。但是上面的代码不会在屏幕上打印任何内容。

我有点迷茫,不知道这里发生了什么。有谁知道这里出了什么问题?

4

2 回答 2

3

好的,让我们看一下其中的一些行:


var db = new DataClasses1DataContext(cs);

这是对构造函数的完全正常且精细的调用。由于 DataContext 实现了 IDisposable,所以在实际使用时,请考虑使用 using 语句。

using (var db = new DataClasses1DataContext(cs))
{
  // do stuff with db here
} // when leaving the block, db is disposed - even in the case of an exception.

db.Connection.Open();

不要这样做。DataContext 将在需要时打开和关闭连接。


foreach (var b in db.Mapping.GetTables())
  Console.WriteLine(b.TableName); 

嗯,也许映射中没有表。您是否从服务器资源管理器中将表格拖到设计器表面?

大多数人会查询表而不是仔细阅读映射。请考虑以下代码:

foreach (var customer in db.Customer.Take(10))
{
  Console.WriteLine(customer.Name); 
}

这是一个视频,展示了如何从服务器资源管理器中将表格拖到设计器表面:

http://www.youtube.com/watch?v=z9L11qrw9gk

于 2012-07-02T14:08:08.020 回答
1

尝试将您的连接字符串更改为以下

string cs = @"Data Source=.\;Initial Catalog=somedb;Integrated Security=SSPI;";
于 2012-07-02T03:08:46.083 回答