Die Entitätstypklasse ist nicht Teil des Modells für den aktuellen Kontext

8

Dies ist ein MODELL erster Ansatz. Ich habe das schon ausführlich recherchiert und habe keine Antwort gefunden. Ich habe alle Vorschläge unter den folgenden Links ausprobiert:

Dies scheint das gleiche Problem zu sein, aber ohne Auflösung Der Entitätstyp & lt Klassenname & gt; ist nicht Teil des Modells für den aktuellen Kontext

Dies sind die Links, die ich bereits recherchiert habe. Bitte antworte nicht als Duplikat von ---- EF 4.1 Code Erster Fehler - Der Entitätstyp SomeType ist nicht Teil des Modells für den aktuellen Kontext Der Entitätstyp ist nicht Teil des Modells, EF 5

Hier ist der EDMX (Abkürzung für Abkürzung):

%Vor%

Der Repository-Code:

%Vor%

Der DatabaseContext-Code:

%Vor%

Und die 2 Klassendateien:

WorkOrderHeader:

%Vor%

CompanyHeader:

%Vor%

Einheitstestcode:

%Vor%

Dinge, die ich versucht habe, das Problem zu lösen:

1) Überprüfte Datenbank - Beide Abfragen geben Daten korrekt zurück.     Wählen Sie * aus vwWorkOrderHeader     Wählen Sie * aus vwCompanyHeader

2) Gelöschter WorkOrderHeader aus dem EDMX hat ihn dann aus der Datenbank neu erstellt.

3) MOQed den DBContext, um sicherzustellen, dass es nicht die Dienstabfrage ist, etwas lustiges zu tun. Dies gibt das Objekt korrekt zurück, also bedeutet es, dass es etwas auf der Kontext-Ebene oder darunter ist.

4) Schritt durch beide Tests, um sicherzustellen, dass sie die gleiche Methode verwenden, um den Kontext aufzubauen - Thy do.

4) Schritt durch beide Tests, um sicherzustellen, dass sie die gleiche Methode zum Aufbau des Repository verwenden - Thy do.

5) Der einzige Unterschied ist während der folgenden Funktion von DatabaseContext:

%Vor%

Der Code "WorkOrderHeader" hat Folgendes in der Überwachung für MyBase.Set (Of T) ()

%Vor%

Der CompanyHeader-Code hat folgende in der Überwachung für MyBase.Set (Of T) ()

%Vor%

Ich habe einen vollständigen Verlust und beginne meinen dritten Tag damit, an demselben Problem zu arbeiten. Ich hoffe, dass einige frische Augen auf das Problem einen Fehler sehen, den ich gemacht habe, oder zeigen Sie mich in Richtung auf das Testen des Problems, an das ich nicht gedacht habe.

UPDATE:

Ich habe den Dienstcode entfernt, um sicherzustellen, dass es sich um etwas im DBContext handelt. Ich habe den Dienst aus der Gleichung isoliert, so dass nur die Repositorys verwendet werden und sie alle den gleichen DatabaseContext verwenden, so dass er nichts mit der Verbindungszeichenfolge zu tun haben kann. Ich habe überprüft, dass im Model Browser unter Insight_Model / EntityContainer: Insight_Entities / Entity Sets / WorkOrderHeaders existiert und dass unter Insight_Model / Entity Types / WorkOrderHeader existiert. Es scheint fast so, als ob der DatabaseContext nicht einmal versucht, das konzeptionelle Modell für den Entitätssatz abzufragen.

    
Aaron Bar 13.12.2012, 16:23
quelle

1 Antwort

21

Nach 3 (4) Tagen (abhängig davon, wie du Tage ansiehst, teile ich Tage, wenn ich schlafe und nicht unbedingt wenn die Sonne untergeht / aufgeht), fand ich die Antwort. In der obigen EDMX-Datei habe ich eine Spalte namens LeadTakenDate, in der Klasse WorkOrderHeader habe ich den Feldnamen LeadTaken verwendet. Das war ein dummer Fehler von mir.

Wie können Sie davon profitieren? Hier ist, wie ich das Problem gelöst habe:

Zuerst isolierte ich das Problem auf genau einen Bereich, indem ich Teile ausmeißelte, um zu sehen, wie weit das Kaninchenloch das Problem war. Sobald ich herausgefunden hatte, dass das Problem im DatabaseContext war, schrieb ich einen Testfall, der einen funktionierenden und einen nicht funktionierenden Anwendungsfall erzeugte. Dies isolierte das Problem und erlaubte es mir, Theorien zu testen, um es schneller zu beheben. Ich habe tausend verschiedene Dinge ausprobiert, bevor ich versuchte, den EF 5.x persistence ignorous poco generator zu benutzen. Ich habe meinen gesamten Code in der WorkOrderHeader-Klasse auskommentiert und den generierten Code kopiert. Wiederhole meine Tests und sie haben funktioniert, also habe ich angefangen, meine Eigenschaften auskommentieren und den generierten Code auskommentieren und dann meinen Test wiederholen, bis ich die entsprechende Eigenschaft treffe. p>

Die Fehlermeldung ist so kryptisch, dass die Fehlersuche sehr schwierig sein kann.

    
Aaron Bar 14.12.2012 13:12
quelle