2013-01-23 7 views
8

W moim projekcie DataAccess mam kod:Dlaczego instrukcja Using podaje błąd, mimo że mój typ implementuje IDisposable?

using (TandAEntities dataContext = new TandAEntities()) 
{ 
    // Some code 
} 

To nie daje błąd i działa dobrze.

Ale w moim projekcie testu jednostkowego mam ten sam kod, ale kompilator podaje błąd; Typ stosowany w użyciu instrukcji musi być niejawnie zamienny do 'System.IDisposable'

sprawdziłem definicję naciskając F12, i rzeczywiście ma realizować IDisposable i ma metodę rozporządzać.

Czy może brakuje niektórych odniesień?

+0

Czy możesz pokazać kod testu jednostki, który się nie kompiluje? –

+1

http://stackoverflow.com/questions/6754021/linq-context-object-isnt-registering-as-a-people-system-idisposable-object –

Odpowiedz

12

Najprawdopodobniej odpowiedź w duplikacie połączonym - brakująca using System.Data.Linq.

Inne opcje: masz nieaktualne biblioteki DLL (np. Zainstalowane w GAC).

Jeśli nie możesz łatwo znaleźć nieaktualnej biblioteki DLL po prostu rozglądając się i sprawdzając GAC - zmień kod na coś, co używa tego typu, ale kompiluje i debuguje test. Zaznacz opcję Debuguj-> Windows-> Moduły, aby wybrać położenie zestawu z tym typem, który jest faktycznie używany.

+7

Dołączyłem używając System.Data.Linq, i to nie działa, ale potem dodałem odwołanie do EntityFramework, a następnie zadziałało. – Cloud9999Strife

+3

Chodzi o to, aby dodać wszystkie niezbędne biblioteki DLL, tak aby kompilator mógł przeszukiwać je wszystkie, aby znaleźć klasę podstawową, która może zostać przekonwertowana na 'IDisposable'. Na przykład klasa 'DataContext', która implementuje' IDisposable', istnieje w EntityFramework dll. –

+2

W moim przypadku po dodaniu odniesień do System.Data.Linq błąd zniknie – etlds

Powiązane problemy