webentwicklung-frage-antwort-db.com.de

Das Entity Framework-Aktualisierungsmodell aus der Datenbank generiert keine cs-Klasse für neu hinzugefügte Tabelle in der tt-Klasse

Ich verwende das Entity Framework 5 mit Visual Studio 2012. 

Ich habe ein bestehendes Modell. Jetzt möchte ich dem vorhandenen Modell eine neue Tabelle hinzufügen. Dafür habe ich die edxm-Datei geöffnet und mit Rechtsklick das Modell erfolgreich aktualisiert. 

Nun kann ich in "Model Browser" unter "EntityTypes" für model sehen, dass der Tabellenname existiert. Im Projektmappen-Explorer wird jedoch nicht die automatisch generierte CS-Datei für die Tabelle angezeigt, die unter ".tt" hinzugefügt wurde. 

Ich habe versucht, "benutzerdefiniertes Werkzeug auszuführen", aber die Klasse wurde nicht generiert. Auch das Visual Studio wurde neu gestartet, das Ergebnis ist jedoch dasselbe.

Kann mir jemand helfen? 

Vielen Dank

9
Dev

Probleme

  1. Falls Sie den Tabellennamen tblEmployee in der Datenbank haben. Nachdem Sie jedoch 'Entitätsdatenmodell' hinzugefügt haben, haben Sie die Entität tblEmployee in Employee in der EDMX-Datei geändert, und anschließend auf Speichern und Erstellen. Klassen für geänderten Namen werden jedoch nicht automatisch in der Datei Model1.tt generiert.
  2. Bei " Update Model From Database " zum Hinzufügen einer neuen Tabelle tritt dasselbe Problem auf.
  3. Auch nicht in MVC verfügbar. Beim Erstellen einer Ansicht mit Modellklasse/Erstellen von Controllern mit Aktionen mithilfe von EntityFramework

Dieses Problem bezieht sich auf eine frühe Version von VS2012. Dieses Problem wurde in einer aktualisierten Version von VS2012 behoben.

Lösung

wir haben eine Lösung dafür mit der frühen Version von VS2012 & EF 5.0

Folge den Schritten

  1. Klicken Sie mit der rechten Maustaste auf "Modell1.tt" und wählen Sie "Benutzerdefiniertes Werkzeug ausführen". Speichern und Erstellen. Die Klassen werden jetzt generiert.
  2. Klicken Sie mit der rechten Maustaste auf "Model1.Context.tt" und wählen Sie "Benutzerdefiniertes Werkzeug ausführen". Speichern und jetzt erstellen. Siehe die Eigenschaft IN. Die Kontextklasse wird wie generiert

    public DbSet<Employee> Employees { get; set; } 
    

Lösung speichern und erstellen

Model1Context context=new Model1Context();
List<Employee> empList= context.Employees.ToList();

Dies funktionierte für mich ... Aber denken Sie daran, dass EF 6.0 immer noch nicht in der Lage ist, Scaffolding zu erstellen, wenn Sie in MVC mit dieser Version von VS2012 .. Controller erstellen und mit Entityframework erstellen. Sie müssen EF 5.0 verwenden oder VS2012 mit aktualisieren neues Update.

21
Dnyneshwar

Ich habe es gelöst. 

Das Problem bestand in Dateien Dateiname . Context.tt und Dateiname .tt. 

Der in beiden Dateien angegebene Diagrammdateiname für die Variable const string inputFile unterschied sich von der vorhandenen Diagrammdatei ( .edmx file). Es wurde mit dem Namen der vorhandenen Diagrammdatei aktualisiert und anschließend das Modell aus der Datenbank aktualisiert. Funktioniert jetzt gut. 

4
Dev

In diesem Fall lösche ich einfach das aufregende Modell und klicke dann auf Hinzufügen und füge einfach die neu hinzugefügte Tabelle hinzu!

Wenn dies der Fehler mit der edmx-Datei in einem Ordner ist, ist sie jetzt behoben. Laden Sie VS 2012 Update 1 herunter und installieren Sie es. Sie können es von folgender Website herunterladen:

http://www.Microsoft.com/visualstudio/deu/downloads#d-visual-studio-2012-update

4
Neel

Ich habe der neuen Tabelle einen Primärschlüssel hinzugefügt. Das löst das Problem.

0
alexey