【问题标题】:C# Linq to SQL connection string (newbie)C# Linq to SQL 连接字符串(新手)
【发布时间】:2012-07-02 11:28:31
【问题描述】:

我是一个新的 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,所以我认为我已经成功连接到数据库,因为根本没有错误。但是上面的代码并没有在屏幕上打印任何内容。

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

【问题讨论】:

  • 数据上下文中有多少个映射?试试Console.WriteLine(db.Mapping.GetTables().Count();?映射与表不同。
  • 没错!数据上下文中根本没有映射,但是 count() 返回一个与我在将一些映射拖入设计器后拥有的映射计数相关的数字。谢谢!

标签: c# sql linq connection-string datacontext


【解决方案1】:

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

string cs = @"Data Source=.\;Initial Catalog=somedb;Integrated Security=SSPI;";

【讨论】:

  • 感谢您回答我的问题,但尝试后没有运气。我也做了一些其他的连接字符串组合,仍然无法从中获取任何数据。似乎我缺少某种属性来使 linq 与我无法弄清楚的 sql server 对话。
【解决方案2】:

好的,让我们看看以下几行:


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

【讨论】:

  • 你说的都是真的!我没有在映射中添加任何表,所以 gettables.count() 返回 0。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多