EF代码优先:无法连接到SQL Server

LCJ*_*LCJ 1 .net c# sql-server ado.net entity-framework

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

笔记:

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

例外:

提供程序未返回ProviderManifestToken字符串

消息:

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

内在例外:

建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及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<Dinner> Dinners { get; set; }
    public DbSet<RSVP> 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();
        }

    }
}
}
Run Code Online (Sandbox Code Playgroud)

Den*_*ton 5

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