EF Code First:无法连接到SQL Server

我正在尝试使用代码优先方法创建数据库。 当我运行以下代码时,我收到以下exception。 我们怎样才能克服这一点?

笔记:

  • 我的系统上有SQL Server 2008 R2。
  • 我没有使用任何配置文件。 我假设它将使用约定创建数据库
  • 没有开放的连接; 我刚刚重启系统并进行了测试。 仍然是同一个问题。
  • EntityFramework.dll的运行时版本是v4.0.3xxx

例外

提供程序未返回ProviderManifestToken字符串

消息

此操作需要连接到“主”数据库。 无法创建与“主”数据库的连接,因为已打开原始数据库连接并且已从连接字符串中删除凭据。 提供未打开的连接。

内在例外

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 validation实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:命名管道提供程序,错误:40 – 无法打开与SQL Server的连接)

码:

using System.Data.Entity; namespace LijosEF { public class Dinner { public int DinnerID { get; set; } public int Title { get; set; } } public class RSVP { public int RSVPID { get; set; } public int DinnerID { get; set; } public virtual Dinner Dinner { get; set; } } //System.Data.Entity.DbContext is from EntityFramework.dll public class NerdDinners : System.Data.Entity.DbContext { public DbSet Dinners { get; set; } public DbSet RSVPs { get; set; } } } namespace LijosEF { class Program { static void Main(string[] args) { using (var db = new NerdDinners()) { var product = new Dinner { DinnerID = 1, Title = 101 }; db.Dinners.Add(product); int recordsAffected = db.SaveChanges(); } } } } 

没有任何连接信息。 EF将尝试在SQL Express中创建数据库,而不是SQL Server。 如果要在SQL Server中创建它,则需要提供连接字符串。

 public class NerdDinners : System.Data.Entity.DbContext { public DbSet Dinners { get; set; } public DbSet RSVPs { get; set; } } 

将此更改为

 public class NerdDinners : System.Data.Entity.DbContext { public NerdDinners(string connString):base(connString) {} public DbSet Dinners { get; set; } public DbSet RSVPs { get; set; } } 

解决并知道您正在做什么的最简单方法是在app.config中添加Connectionstring,如下所示: