为什么我尝试访问数据库文件 (.mdf) 时出现网络错误?

Why do i get network error when i tried to access a database file(.mdf)?

我使用了以下简单的 LINQ2SQL 查询来访问硬盘上的 .mdf 数据库文件并显示某些行

class Program
{
    static void Main(string[] args)
    {
        string str = @"D:\SE\MS\LINQ\LinqInAction\Data\NORTHWND.mdf";
        DataContext db = new DataContext(str);

       Table<Contact> contacts =   db.GetTable<Contact>();

       var x = from y in contacts
               select y;

       foreach (var item in x)
       {
           Console.WriteLine(item.Name);
       }
    }
}

[Table(Name = "Contacts")]
class Contact
{
    [Column(IsPrimaryKey = true)]
    public int ContactID { get; set; }
    [Column(Name = "ContactName")]
    public string Name { get; set; }
    [Column]
    public string City { get; set; }
}

但它给了我以下错误

错误信息是

建立与 SQL 服务器的连接时出现与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确并且 SQL 服务器配置为允许远程连接。 (提供商:SQL 网络接口,错误:26 - 定位 Server/Instance 指定错误)

我该如何解决这个问题?

您为new DataContext(str);传入的字符串应该是连接字符串配置的名称或实际的连接字符串。你可以试试这个:

string str = @"Server=.\SQLExpress;AttachDbFilename=D:\SE\MS\LINQ\LinqInAction\Data\NORTHWND.mdf;Database=NORTHWND;
Trusted_Connection=Yes;";
DataContext db = new DataContext(str);

或者您可以在 app.config:

中声明此连接字符串
<configuration>
   <connectionStrings>
      <add name="nwDb" connectionString="Server=.\SQLExpress;AttachDbFilename=D:\SE\MS\LINQ\LinqInAction\Data\NORTHWND.mdf;Database=NORTHWND;Trusted_Connection=Yes;"/>
   </connectionStrings>
</configuration>

并在您的代码中使用它:

DataContext db = new DataContext("nwDb");