2017-12-28 3 views
7

Datei enthält Ich verwende Datenbank zuerst und ich habe eine switch Aussage, die etwa wie folgt aussieht:„die Art Person ist nicht Teil des Modells für den aktuellen Kontext“ Fehler ausgelöst wird, wenn Projekt mehr als eine EDMX

switch (site) 
{ 
    case Site.One: 
     using (OneContext one = new OneContext()) 
      return one.OrganizationObjects.SingleOrDefault(x => x.u_Name == orgName)?.g_org_id; 
    case Site.Two: 
     using (TwoContext two = new TwoContext()) 
      return two.OrganizationObjects.SingleOrDefault(x => x.u_Name == orgName)?.g_org_id; 
    default: 
     throw new NotImplementedException(); 
} 

Beide Datenbanken sind ziemlich ähnlich und haben fast alle die gleichen Modelle.

Wenn ich die EDMX-Datei "Two" lösche und die Bedingung auskommentiere, funktioniert OneContext perfekt.
Wenn ich die TwoContext EDMX-Datei in das Projekt und führen Sie den Code erneut ein, der „OneContext“ Code hinzufügen, schlägt fehl, wenn es versucht, OrganizationObjects.

ich jeden Kontext stellte sicher, dass die Abfrage die richtige Verbindungszeichenfolge wurde mit, aber dieser Fehler immer noch auftritt :

enter image description here

+0

Beide edmx ist in demselben Ordner? – Eldho

+0

@Eldho Ja. Es sind mehrere EDMX im selben Ordner. Sollten sie in verschiedenen Ordnern sein, wenn die Modelle ähnlich sind? – ernest

+1

Könnten Sie versuchen, diese mehreren Ordner zu trennen? Ich hatte ein Problem, wie wenn zweite edmx hinzugefügt wird, habe ich die ersten edmx tt Klassen vermisst. es funktionierte, wenn getrennt. – Eldho

Antwort

3

Problemumgehung: Ändern Sie eine Eigenschaft in einer der beiden identischen Klassen.

EF stimmt mit dem Klassennamen und den Klasseneigenschaften überein. So habe ich gerade einen Eigenschaftsname auf einem der EF-Objekte geändert, und der Fehler ist weg.

Wie @Entrodus kommentiert einer der anderen Antworten:

EF Kollision geschieht nur, wenn zwei Klassen den gleichen Namen und die gleichen Satz von Parametern haben.

The mapping of CLR type to EDM type is ambiguous with EF 6 & 5?

0

Entity Framework passt auf Klassennamen und Klasseneigenschaften. Zwei Klassen mit demselben Klassennamen und denselben Eigenschaften führen zu einem Konflikt.

Ändern Sie eine Eigenschaft auf einer der zwei identischen Klassen wird das Problem lösen.

Verwandte Themen