2017-07-17 8 views
0

Ich benutze Entity Framework Code zuerst in meinem Projekt, und ich habe etwas ziemlich albern ich kann nicht beheben. Ich habe eine Tabelle in SQL Server Management Studio umbenannt und sie dort gelöscht. Ich habe dann die korrekte Tabelle neu erstellt (nur ein 's', das nicht hier sein sollte). Jetzt ist es nicht mehr da und ich erhalte Ausnahmen in meinen Abfragen, da EF nach einer Tabelle sucht, die nicht mehr existiert (obwohl ich sie überall umbenannt habe!). Jetzt heißt meine Tabelle RelImpUser und es war RelImpUsers.Entity Framework Umbenennen Fehler

Also habe ich versucht, die Tabelle in SQL Server neu zu erstellen, dann eine Migration mit der Herstellung:

public override void Down() 
    { 
     DropTable("dbo.RelImpUsers"); 
    } 

Aber das ist meine Tabelle nicht löschen. Und jedes Mal, wenn ich eine Abfrage ausführe, sieht es in RelImpUsers aus, es geht nicht für RelImpUser das ist der einzige Name, den ich in meinen Code einlege. Irgendwelche Ideen, wie das zu beheben ist? Ich kann etwas Code hinzufügen, wenn Sie wollen, ich habe einfach gespürt, dass es hier nicht viel hilft.

Bearbeiten 1: Es könnte mit der Pluralisierung meiner Tabellen zu tun haben. Also alle meine Tabellen hatten alle Pluralnamen, aber die neue nicht, ABER EF noch Plural, weil ich die Option beim Erstellen von DB-Code zuerst überprüft.

Danke!

+1

Ich würde empfehlen, verbrannte Erde auf diesem zu gehen. Löschen Sie die Datenbank aus SQL, löschen Sie Ihre Migrationen aus Ihrem Projekt und reinitialisieren Sie aus Ihrem Datenmodell (nachdem Sie den Tabellennamen korrigiert haben) – Ortund

+0

Welche Version von EF bitte? – Jimbot

+0

Version 6.0.0.0 und ich gehe zu @Ortunds Vorschlag, da ich mein Projekt auf eine VM verschieben muss, ist das kein Problem. –

Antwort

1

Code First verwendet seine Modelle zum Erstellen der Abfragen. Sie müssen Ihre RelImpUser Klasse (oder fügen vergleichbar fließend Code) zu annotieren:

using System.ComponentModel.DataAnnotations.Schema; 

[Table("RelImpUser")] 
public class RelImpUser 
{ 
    public int RelImpID { get; set; } 
    public string Field1{ get; set; } 
    ... 
} 

Fluent-Äquivalent:

modelBuilder.Entity<RelImpUser>().ToTable("RelImpUser"); 

Wenn Sie nicht pluralisierte Namen möchten, können Sie diese Konvention deaktivieren:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
} 
+0

Bin ich der Einzige, der nicht gerne mit der Fluent API arbeitet? Ehrlich gesagt, würde ich mich angesichts dieser Optionen absolut für die DataAnnotation entscheiden, bevor ich den fließenden Code – Ortund

+2

hinzufüge. Ich bevorzuge viel fließenden Code. Trennung von Bedenken. Möchte meine POCOs behalten P :) –

+0

Aber dann muss die Annotation auf die pluralisierte Tabelle zeigen? Bedeutung '[Table (" RelImpUsers ")]', oder singular beibehalten? –

Verwandte Themen