【问题标题】:Entity Framework Code First Error "Error Locating Server/Instance Specified"实体框架代码第一个错误“错误定位服务器/指定的实例”
【发布时间】: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


【解决方案1】:

我遇到了同样的错误,让我发疯了大约一天。我的情况是我有一个大型解决方案,其中包含一个预先存在的启动项目,并且我正在将 EF 添加到持久性项目中。

所以第一步是添加 EF 依赖项。这在我的持久性项目中创建了一个具有正确 EF 内容的 app.config。然后我去了 Enable-Migrations 并在这篇文章中遇到了同样的错误。在这一点上,我没有想到将 EF app.config 设置复制到启动项目的 app.config 中,因为我认为在最终运行应用程序之前必须先尝试一下。

当我将解决方案启动项目更改为持久性项目时问题已解决,因此我可以让 EF 找到正确的 app.config。或者我可以将 EntityFramwework 相关部分复制到启动项目的 app.config 中。

【讨论】:

  • 非常感谢。我正在为此而努力。
  • 这个答案可能只是节省了我的时间!谢谢
  • 启动项目...!你值得一个拥抱!
  • 我知道这是旧的,但我想谢谢你!我尝试了我能想到的一切......没有任何效果......右键单击项目>设置为启动......一切都很好,哈哈。我觉得自己很愚蠢哈哈。
【解决方案2】:

在本地开发时出现相同的错误消息,但昨天运行良好。 原来解决方案中的错误项目被设置为启动项目。

因此,如果您在包管理器控制台中执行更新数据库命令后也收到此消息,请务必检查是否设置了正确的启动项目。

例如 Web 项目,而不是辅助项目之一。 Visual Studio 似乎有将其他项目设置为 StartUp 的习惯,有时它自己...

【讨论】:

    【解决方案3】:

    尝试看看这里,它解释了很多原因,因为您在 cmets 中指出您确实明确指定了服务器名称,并且代码也与 sql server 在同一台机器上运行,因为从我看到的数据源只有一个点,表示它与运行c#代码程序的机器是同一台机器。

    http://blogs.msdn.com/b/sql_protocols/archive/2007/05/13/sql-network-interfaces-error-26-error-locating-server-instance-specified.aspx

    【讨论】:

      【解决方案4】:

      必须将 EntityFramework 依赖项也添加到启动项目中。

      Install-Package EntityFramework
      

      还必须在我的主项目 App.config/Web.config 中定义 connectionStrings

      <connectionStrings>
          <add name="Database" providerName="System.Data.SqlClient" connectionString="foo.bar" />
      </connectionStrings>
      

      【讨论】:

        【解决方案5】:

        这对我来说是一个解决方案 Traditional SqlClient can find server instance but EF can't

        简而言之:

        Database.SetInitializer<MyContext>(
        new MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration>(
            useSuppliedContext: true));
        

        这里的主要部分是 useSuppliedContext: true

        【讨论】:

          【解决方案6】:

          我遇到了同样的问题,花了一整天的时间。终于找到了@Christian 的答案,现在我找到了更好的方法!

          ConnectionString 放入启动项目中。因此,您无需每次更改实体时都进行切换。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-06-07
            • 2013-08-11
            • 1970-01-01
            • 2016-02-26
            • 1970-01-01
            相关资源
            最近更新 更多