试图连接到简单的mdf文件

时间:2015-03-03 16:15:12

标签: c# sql-server linq

我正在尝试使用Essential Linq,并且只是连接到提供的.mdf文件时遇到问题。

我已将文件保存在C:\DATA\NORTHWND.MDF。我正在使用Visual Studio 2013

代码如下所示:

using System;
using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Linq;
using System.IO;

namespace LinqToSqlWithoutDesigner
{
    [Table(Name="Customers")]
    class Customer
    {
        [Column]
        public string CustomerID;
        [Column]
        public string City;
    }

    class Program
    {
        static void Main(string[] args)
        {
            DataContext db = new DataContext(@"C:\DATA\NORTHWND.MDF");

            var query = from c in db.GetTable<Customer>()
                    where c.City == "London"
                    select new { CustId = c.CustomerID, City = c.City };

            foreach(var cust in query)
            {
                Console.WriteLine(cust);
            }
        }
    }
}

我也尝试过使用:

string connectionString = @"Data Source=.\SQLEXPRESS;
                      AttachDbFilename=c:\data\northwind.mdf;
                      Integrated Security=True;
                      Connect Timeout=30;
                      User Instance=True";
DataContext db = new DataContext(connectionString); 

但我总是得到错误:

  

未处理的异常:System.Data.SqlClient.SqlException:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:26 - 查找指定的服务器/实例时出错)

3 个答案:

答案 0 :(得分:3)

您的计算机上似乎没有SQL Server Express,或者未激活所请求的网络接口协议。

对于.mdf文件,您需要启动并运行SQL Server

答案 1 :(得分:0)

您的连接字符串中不存在目录名称

添加到connectionString:

catalog=yourDbName

注意:您无法直接连接到MDF文件。

如果数据库服务器中不存在数据库,则需要使用.mdf文件和.ldf文件。

然后使用您的连接字符串并添加我提到的目录名称

答案 2 :(得分:0)

好的,这是允许我连接到MDF文件的字符串

DataContext db = new DataContext(@"Data Source=(localdb)\v11.0;
                                   Integrated Security=true;
                                   AttachDbFileName=C:\DATA\NORTHWND.MDF");

有关LocalDB的更多信息,请访问: http://blogs.msdn.com/b/sqlexpress/archive/2011/07/12/introducing-localdb-a-better-sql-express.aspx