【发布时间】:2012-06-18 21:25:48
【问题描述】:
我正在尝试将 Code First 与我的本地 Sql Server 2008 R2 实例一起使用。我创建了一个用户'dev',可以使用 Sql Managment Studio 登录和创建数据库。问题是我在尝试使用 EntityFramework 中的 DbContext 创建数据库时不断收到错误消息。这是错误消息:
“发生网络相关或特定于实例的错误,同时 建立与 SQL Server 的连接。找不到服务器或 无法访问。验证实例名称是否正确,并且 SQL Server 配置为允许远程连接。 SQL 网络接口,错误:26 - 查找指定的服务器/实例时出错"
我检查了我的 Sql Server 的错误消息,它确实允许远程连接。
我用以下代码抽象了我的系统并得到了同样的错误:
namespace CodeFirstConsole
{
public class Program
{
static void Main(string[] args)
{
var db = new MyContext();
try { Console.WriteLine(db.Parents.Count()); }
catch (Exception) { throw; }
Console.Read();
}
}
internal class MyContext : DbContext
{
public DbSet<ParentObject> Parents { get; set; }
public DbSet<ChildObject> Children { get; set; }
public MyContext()
{
this.Database.Connection.ConnectionString =
"Data Source=.;Database=ConsoleTest;Initial Catalog=ConsoleTest;User ID=dev;Password=dev;";
}
}
internal class ParentObject
{
public int Id { get; set; }
public string PropertyOne { get; set; }
}
internal class ChildObject
{
public int Id { get; set; }
public bool PropertyOne { get; set; }
public string PropertyTwo { get; set; }
public virtual ParentObject Parent { get; set; }
}
internal class MyInitializer : DropCreateDatabaseAlways<MyContext>
{
protected override void Seed(MyContext context)
{
context.Parents.Add(new ParentObject() { PropertyOne = "hi" });
base.Seed(context);
}
}
}
【问题讨论】:
-
您是否尝试过明确指定数据源,我知道如果您将其留空,它会认为它是同一台机器,但请尝试将其放入并查看是否得到相同的结果。
-
是的,我在设置连接字符串时已在示例中明确指定了它。
-
只是检查一下上面你写的代码是否也在你连接的 SQL Server 机器上?只是检查。
-
查看我在答案部分为您发布的链接。此外,您可能还想检查命名管道设置(只是为了验证)
标签: c# entity-framework-4.1 ef-code-first