6

Ich verwende das Entity Framework, um die Klassen und Funktionen in C# zu generieren. Ich muss mit dem SQL Server interagieren.Entity Framework, das keine Klassen für Tabellen oder Prozeduren generiert

Als Referenz hier ist einer meiner Tabellen:

SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE TABLE [dbo].[Area](
    [ID] [bigint] identity (1, 1) primary key, 
    [Name] [nvarchar](100) NOT NULL 
    ) 
GO 

Nach dem Entity Data Model-Assistenten (‚EF Designer aus der Datenbank‘) senden hat mein Projekt die edmx Datei und ein paar neue CS-Dateien , aber es scheint, als würde es nicht alles erzeugen, was es braucht.

In meiner DatabaseEntities Klasse, zum Beispiel, ich habe:

public virtual DbSet<Area> Areas { get; set; } 

Allerdings gibt es keine Definition für den Typen 'Area' (zusammen mit drei anderen fehlenden Typen). Ich vermisse auch die Funktionen für gespeicherte Prozeduren.

Ich habe versucht, die neuen Dateien zu löschen und den Model Wizard erneut auszuführen, aber ich bekomme das gleiche Ergebnis.

Hat jemand anderes in das hineingeraten?

Randnoten:

ich in den letzten paar Versuche habe bemerkt, dass ich auch einen Fehler bekommen, wenn der Assistent ausgeführt wird: „Das Paket Entity Framework nicht auf Projekt installiert“. Allerdings erzeugt es immer noch den edmx und den model.context, wenn ich darauf klicke.

Ich hatte das gleiche Problem mit beiden Entity Framework-Versionen 6.0.0 und 6.1.2.

Die Neuinstallation des Frameworks hatte keine Auswirkungen auf das Problem (die Probleme).

UPDATE:

Deinstallation und Neuinstallation nuget die neueste Version erlaubt mir EntityFramework über nuget ohne Fehler zu installieren. Jetzt fehlt das ADO.NET-Datenmodell jedoch im Dialogfeld "Neues Element hinzufügen".

+0

Wenn Sie CodeFirst von einer vorhandenen Datenbank ausführen, erhalten Sie keine willkürlich gespeicherten Procs oder tvfs, da sie von CodeFirst nicht nativ unterstützt werden. – Pawel

+0

Für gespeicherte Proc müssen Sie möglicherweise die folgenden zwei Zeilen hinzufügen: SET FMTONLY OFF SET NOCOUNT ON Im Dialogfeld können Sie die komplexen Typen erstellen. Es wird empfohlen, FMTONLY wieder zu entfernen. Können Sie für die Tabellen die Tabellendefinition anzeigen? – Ako

+0

@Pawel: Ich verwende EF Designer aus der Datenbank. –

Antwort

2

Es waren beteiligt mehr Schritte in dem, was ich getan habe, und ich habe einige Kredite für die Menschen zu geben, die unter der Frage kommentiert.

1) Ich deinstalliert nugget Paketmanager und installierte die neueste Version (anscheinend war meine nicht frisch). Dies ermöglichte mir, EntityFramework über Nugget ohne Fehler oder Rollback-Nachrichten zu installieren.

2) Ich bin nicht sicher, ob dies geholfen hat oder nicht, aber ich habe auch Entity Framework Tools für Visual Studio über die Microsoft-Website neu installiert. Ich bin mir immer noch nicht sicher, ob es notwendig ist, beides zu haben.

3) Die ADO.NET Entitätsdatenmodellvorlage fehlte im Dialogfeld Neuer Artikel. Nachdem Sie "Add -> Component" statt "Add -> New Item" ausgewählt hatten, erschien es mystisch unter beiden Listen.

Sobald das getan wurde, konnte ich EF Designer und alles erzeugte ohne Problem laufen lassen.

-3

Persönlich würde ich sehr empfehlen, mit einem Code-First-Ansatz statt der Designer gehen. Da ist der Designer nichts als Ärger !!!

Code First Tutorial

Calling Stored Procedures from Code First

+0

Dies könnte einen Blick wert sein. Obwohl ich den Designer mit meinem letzten Projekt benutzt habe, hat es ganz gut funktioniert. –

+1

Ich verwendete VB und WinForms und die meisten Dinge funktionierten gut ;-) Ehrlich gesagt, in dem Moment, in dem Sie versuchen, hoch verwandte Entitäten mit benutzerdefinierten Navigationseigenschaften zu aktualisieren, ziehen Sie sich die Haare aus! –

+0

In Code ersten Ansatz, wenn Datenbank benötigen mehr Tabellen und Felder weiter als wie aktualisieren Sie die db-Struktur? Soweit ich weiß, in Code ersten Modus db wird nicht automatisch aktualisiert. –

0

Stellen Sie sicher, dass Ihre Spaltennamen keine reservierten Wörter wie Datentypen oder Schlüsselwörter sind; Ich hatte heute ein Problem beim Versuch, eine Tabelle mit einer Spalte zu importieren, die jemand einfach "DATUM" genannt hat, was offensichtlich ein Datentyp ist, und der EF getäuscht hat. Wenn ich eine Ansicht in SQL erstellte und die Spalte mit einem nicht reservierten Namen als Alias ​​deklarierte, importierte die Tabelle problemlos und generierte alle erforderlichen Klassen.

Verwandte Themen