2017-12-28 148 views
7

EDMX ja najpierw przy użyciu bazy danych i mam switch komunikatu, który wygląda mniej więcej tak:„typ jednostka nie jest częścią modelu w bieżącym kontekście” Błąd jest generowany, gdy projekt zawiera więcej niż jeden plik

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(); 
} 

Obie bazy danych są bardzo podobne i mają prawie wszystkie te same modele.

Po usunięciu pliku "EDMX" i skomentowaniu warunku, OneContext działa idealnie.
Jeśli dodać plik TwoContext EDMX do projektu i ponownie uruchomić tego kodu spowoduje „OneContext” kod nie powiedzie się, gdy próbuje kwerendy OrganizationObjects.

zrobiłem pewny siebie kontekst był używany prawidłowy ciąg połączenia, ale błąd ten nadal występuje :

enter image description here

+0

Zarówno edmx jest w tym samym folderze? – Eldho

+0

@Eldho Yeah. Jest to wiele EDMX w tym samym folderze. Czy powinny znajdować się w różnych folderach, jeśli modele są podobne? – ernest

+1

Czy możesz spróbować oddzielić te wiele folderów. Miałem problem, jak w przypadku dodania drugiego edmxa, ale brakowało mi pierwszych klas edmx tt. działało, gdy rozdzielono. – Eldho

Odpowiedz

3

Obejście problemu: Zmień właściwość na jednej z dwóch identycznych klas.

EF pasuje do nazwy klasy I właściwości klasy. Właśnie zmieniłem nazwę właściwości na jednym z obiektów EF, a błąd zniknął.

Jako @Entrodus skomentował jeden z pozostałych odpowiedzi:

EF zderzenie zdarza się tylko wtedy, gdy dwie klasy mają tę samą nazwę i sam zestaw parametrów.

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

0

Entity Framework odpowiada na nazwę klasy i właściwości klasy. Dwie klasy o tej samej nazwie klasy i tych samych właściwościach powodują konflikt.

Zmiana właściwości jednej z dwóch identycznych klas rozwiąże problem.

Powiązane problemy