簡體   English   中英

EF代碼優先:無法連接到SQL Server

[英]EF Code First: Cannot connect to SQL Server

我正在嘗試使用代碼優先方法創建數據庫。 當我運行以下代碼時,出現以下異常。 我們該如何克服呢?

筆記:

  • 我的系統上有SQL Server 2008 R2。
  • 我沒有使用任何配置文件。 我假設它將使用約定創建數據庫
  • 目前還沒有打開的連接; 我剛剛重新啟動系統並進行了測試。 還是一樣的問題。
  • EntityFramework.dll的運行時版本為v4.0.3xxx

例外情況

提供程序未返回ProviderManifestToken字符串

留言內容

此操作需要連接到“ master”數據庫。 由於原始數據庫連接已打開並且憑據已從連接字符串中刪除,因此無法創建與“ master”數據庫的連接。 提供未打開的連接。

內部異常

建立與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();
        }

    }
}
}

沒有任何連接信息。 EF將嘗試在SQL Express中而不是SQL Server中創建數據庫。 如果要在SQL Server中創建它,則需要提供一個連接字符串。

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

更改為

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

解決和了解您正在做什么的最簡單方法是在app.config中添加一個Connectionstring,如下所示:

<connectionStrings>
    <clear/>
    <add name="NerdDinners"
          providerName="System.Data.SqlClient"
          connectionString="Server=.;Database=NerdDinners;Integrated Security=True;"/>
  </connectionStrings>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM