2017-01-05 3 views
3

Ich benutze EF 6.Wie kann ich meine eigenen Klassen als edmx-Modellklassen verwenden?

Ich würde gerne meine eigenen Domain-Klassen als edmx-Modell-Klassen verwenden, also löschte ich die tt generierten Modellklassen und änderte edmx build Action in None.

Wenn ich versuche, eine Auswahl auszuführen bekomme ich MetadataException

DbContext context = new DbContext("name=BaseObjectsEntities"); 
var u = context.Set<User>().Where(x => x.Id == 1).FirstOrDefault(); 

Funktioniert perfekt mit generierten tt Modellklassen, aber nicht mit meinen eigenen Klassen.

Was soll ich tun oder konfigurieren, um meine Klassen mit edmx zu verknüpfen.

ps: meine Klassen haben bereits ihre Klassen- und Eigenschaftennamen gleich edmx.

+0

'Funktioniert perfekt mit generierten tt-Modellklassen, aber nicht mit meinen eigenen Klassen. <= Also was genau passiert? Denken Sie daran, wir können Ihren Computermonitor nicht sehen, daher wird eine Beschreibung dessen, was ** passiert ** ist und wie sich dies vom erwarteten Verhalten unterscheidet, geschätzt. – Igor

+0

Wenn ich nicht tt Klassen löschen und das Objekt ändern aus: - context.Set zu: - context.Set wird es funktionieren, aber ich muß erzeugt löschen und meine eigenen verwenden Klassen. –

+0

Haben Sie darüber nachgedacht, zuerst Code zu programmieren, wo Sie Ihre Klassen und Mappings in C# anstelle eines Designers definieren oder eine T4-Vorlage verwenden? – Igor

Antwort

2

ich mein Problem gelöst,

Dies sind die Schritte, die ich tat:

  • Wenn Sie noch nicht

    Ihre eigene Domain-Klassen erstellen;

  • Datenbank erstellen

    Tabellen erstellen

  • edmx erstellen

    nun aufmerksam zuhören, wenn Sie die Erstellung von edmx finalisieren, wird Visual Studio öffnen edmx in Entwurfsmodus, nicht speichern, nicht schließen, nichts tun, außer den Namen von Entitätsmodellen und deren Namen zu ändern Eigenschaften (in Diagrammblock, der das Modell darstellt), stellen Sie sicher, dass der Name der Entität und It's Eigenschaften wie in der Domäne angegeben sind, werde ich später erzählen, warum nicht speichern oder schließen.

Sie nicht das Design-Fenster noch speichern oder schließen, wenn Sie dies tun und Ihre Domain-Klassen sind im selben Projekt werden sie von den .tt Klassen overwritted werden, die erzeugt werden, wenn emdx ist erstellt.

Löschen Sie alle .tt-Datei, die zu EMDX aggregiert ist und nicht speichern.

  • Jetzt der rechten Maustaste in edmx> Eigenschaften

löschen, was auch immer in "Custom Tool" und stellen Sie sicher, dass die Build-Aktion writted ist EntityDeploy

Wenn Sie entfernen Sie den Text writted Klicken Sie im Custom Tool auf die Eingabetaste und dann auf die Lösung

Jetzt ist es wi Ich werde arbeiten.

  • Ich vergaß zu erwähnen, dass, wenn diese Schritte nicht funktionieren, gibt es einen geheimen Schritt:

das Projekt von Visual Studio löschen und aus Projektordnern, erstellen Sie es, und starten Sie den Anfang Schritte.

+0

Microsoft Konami Code ??? Hollygod! Für mich geht das! –

Verwandte Themen