[英]EF Code First: Cannot connect to SQL Server
我正在嘗試使用代碼優先方法創建數據庫。 當我運行以下代碼時,出現以下異常。 我們該如何克服呢?
筆記:
例外情況 :
提供程序未返回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.