2013-04-15 10 views
7

Ich erstelle ein Modell mit EF und erzeuge seinen Kontext mit dem Generator DbContext 5.X. Jetzt habe ich den Klassennamen einer meiner Entitäten umbenannt. Jetzt, wenn ich meinen Code ausführe, bekomme ich "Der Entitätstyp Student2 ist nicht Teil des Modells für den aktuellen Kontext." Error.Der Entitätstyp [Name] ist kein Teil des Modells für den aktuellen Kontext.

var context = new MyEntities(connectionString); 
foreach(var student in context.Students) 
{ 
    Console.WriteLine(class.Name.ToString()); 
} 

In meinem Datenkontext.

public partial class MyEntities : DbContext 
{ 
    public MyEntities() 
     : base("name=MyEntities") 
    { 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     throw new UnintentionalCodeFirstException(); 
    } 

    // public DbSet<Student> Students { get; set; } -> Origional 
    public DbSet<Student2> Student { get; set; } // I renamed Student to Student2 
} 

Wie behebt man das? Ich muss meine Klasse wegen einiger Konflikte umbenennen.

+0

Woher kommt 'WELL2'? Wie ist die Struktur von 'Student2'? –

+0

Wenn Sie Ihr Problem anscheinend gelöst haben, würden Sie Ihre eigene Frage gerne beantworten, indem Sie erzählen, wie Sie es getan haben, um die Gemeinschaft aufzuklären? –

+0

@GertArnold WELL2 war Tippfehler. Ich habe eine Antwort auf diese Frage hinzugefügt. http://StackOverflow.com/a/16029086/1077385 –

Antwort

1

Verwenden Add-Migration

Dies ist die Probe:

Add-Migration "Muster" -ConnectionString "Data Source=.;" -ConnectionProviderName System.Data.SqlClient 

und Update-Datenbank, wie folgt aus:

Update-Database -ConnectionString "Data Source=.;" -ConnectionProviderName System.Data.SqlClient 

In Visual Studio Sie Package Manager Console für sie verwenden können. Als Standardprojekt sollten Sie Ihr Entity Framework Projekt wählen - wenn Sie viele haben.

+0

Sorry, ich habe es nicht verstanden, was Sie sagen wollen. –

+1

@FaisalHafeez - Ich habe meine Antwort aktualisiert. Ist es dir jetzt klar? – MikroDel

+0

Immer noch nicht in der Lage, es zu bekommen. –

0

Nun, hier ist die Lösung. Öffnen Sie die Benutzeroberfläche der Datei Model.edmx und bearbeiten Sie den Namen der Student-Entität in Student2. Dadurch werden neue Dateien und der Kontext generiert, in dem Student durch Student2 ersetzt wird.

+0

Sie haben mich gebeten, einige Befehle auszuführen (was bei mir nicht funktioniert hat). Und was ich getan habe, den Namen der Entität zu bearbeiten. Der Fehler, den ich machte, war, dass ich den Klassennamen generierter Dateien änderte, aber dem Modell nicht sagte, dass ich eine neue Klasse verwenden sollte, so dass es keine neue Klasse finden konnte. –

0

Viele Tutorials bitten, alle diese zusätzlichen Klassen, die nicht benötigt werden, zu machen. Alles was Sie tun müssen, um das Entity-Framework funktionsfähig zu machen, ist das Erstellen des Modells und dann das Erstellen des Objekts in Ihrem Controler.

Beispielmodell: myEntity.edmx Beispiel Controller:

public class HomeController : Controller 
    { 
     myEntity db = new myEntity(); 

     public ActionResult Index() 
     { 
      return View(db.myTable.ToList()); 
     } 
} 

Alles andere ist im Modell Einheit, so dass, wenn der Fehler zu lesen: „myEntityContext“ ist nicht Teil des Modells“es war wahr, weil ich erstellt eine zusätzliche Klasse mit dem Namen "myEntityContext" in den Lernprogrammen.

Wenn Sie versuchen, eine starke Ansicht mit dem Kontext zu erstellen, der erstellt wird, wird es explodieren, da es versucht, eine Klasse zuzuordnen, die nicht existiert das Modell.Wenn Sie also alle zusätzlichen DAL- und Modellkontexte löschen, erstellen Sie eine neue Ansicht mit der Entität. Kontext, der im Menü "Starke Ansicht" angezeigt wird, sollte alles gut funktionieren.

hatte ich das gleiche Problem und posted, was ich tat es

12

Ich hatte das gleiche Problem zu beheben, wenn ich falsch Metadaten in Verbindungszeichenfolge hatte. Versuchen Sie, die Verbindungszeichenfolge in app.config neu zu erstellen.

Verwandte Themen