2012-06-18 4 views
10

Ich versuche Code First mit meiner lokalen Instanz von Sql Server 2008 R2 zu verwenden. Ich habe einen Benutzer 'dev' erstellt und kann mich mit Sql Managment Studio anmelden und Datenbanken erstellen. Das Problem ist, dass ich eine Fehlermeldung bekomme, wenn ich versuche, eine Datenbank mit DbContext in EntityFramework zu erstellen. Hier ist die Fehlermeldung:Entity Framework-Code Erster Fehler "Fehler beim Auffinden des Servers/der Instanz angegeben"

Die Fehlermeldung Ich habe meine Sql-Server überprüft und es ermöglicht Remote-Verbindungen.

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); 
     } 
    } 
} 
+0

Haben Sie versucht, die Datenquelle explizit anzugeben, ich weiß, wenn Sie es leer lassen, denkt es, dass es die gleiche Maschine ist, aber versuchen Sie es und Wege und sehen Sie, ob Sie die gleichen Ergebnisse erhalten. –

+0

Ja, ich habe es explizit in meinem Beispiel angegeben, als ich die Verbindungszeichenfolge festlegte. –

+1

Überprüfen Sie einfach den Code oben, den Sie geschrieben haben, auch auf dem SQL Server-Computer, mit dem Sie sich verbinden, richtig? Einfach überprüfen. –

Antwort

21

hatte ich den gleichen Fehler, die mich Nüsse etwa einen Tag lang gefahren. Meine Situation war, dass ich eine große Lösung mit einem bereits bestehenden Start-up-Projekt hatte und EF dem Persistenzprojekt hinzufügte.

Also war der erste Schritt, die EF-Abhängigkeit hinzuzufügen. Dadurch wurde in meinem Persistenzprojekt eine app.config mit dem richtigen EF-Inhalt erstellt. Dann ging ich zu Enable-Migrations und bekam in diesem Beitrag den gleichen Fehler. Zu diesem Zeitpunkt dachte ich nicht daran, die EF app.config-Einstellungen in die app.config des Start-up-Projekts zu kopieren, da ich dachte, ich müsste damit herumspielen, bevor ich die App schließlich ausführen würde.

Das Problem wurde behoben, als ich das Startprojekt für die Lösung in das Persistenzprojekt änderte, damit EF die richtige app.config finden konnte. Oder ich hätte den mit EntityFramwork verbundenen Abschnitt in die app.config des Startprojekts kopieren können.

+2

Vielen Dank. Ich schlug meinen Kopf dagegen. –

+0

Diese Antwort hat wahrscheinlich nur meine Stunden gerettet! Danke –

+2

Start-up-Projekt ...! Du verdienst eine Umarmung! – Lernkurve

0

Versuchen Sie einen Blick hier haben sie viele der Ursachen erklärt, da Sie in den Kommentaren angegeben, die Sie explizit tat:

Ich habe mein System mit dem folgenden Code und erhalten den gleichen Fehler abstrahiert Spezifizieren Sie den Servernamen und der Code läuft auch auf dem gleichen Rechner wie der SQL-Server, da die Datenquelle nur einen Punkt hat, was anzeigt, dass es sich um den gleichen Rechner handelt wie das C# -Codeprogramm.

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

0

Hatte die EntityFramework Abhängigkeit auch zum Startprojekt hinzufügen.

Install-Package EntityFramework 

Und hatte auch connectionStrings zu meinem Hauptprojekt App.config/Web.config zu definieren.

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

hatte die gleiche Fehlermeldung auf die lokale Entwicklung , aber es hat gestern gut funktioniert. Das falsche Projekt in der Lösung wurde als StartUp-Projekt festgelegt.

Wenn Sie diese Meldung auch nach einem Befehl update-database in der Package Manager Console erhalten, überprüfen Sie, ob das richtige StartUp-Projekt festgelegt ist.

Zum Beispiel das Web-Projekt, und nicht eines der Hilfsprojekte. Visual Studio scheint die Angewohnheit zu haben, andere Projekte als StartUp selbst einzustellen ...

0

Ich hatte das gleiche Problem und verbrachte einen ganzen Tag damit. Endlich gefunden @ Christians Antwort und jetzt finde ich einen viel besseren Weg!

Setzen Sie ConnectionString in das Startprojekt. Sie müssen also nicht jedes Mal wechseln, wenn Sie eine Entität ändern.