Контекстный объект Linq не регистрируется как тип объекта System.IDisposable. - PullRequest
18 голосов
/ 20 июля 2011

Я пытаюсь использовать мой объект context в выражении using. Он работает в одном проекте, но в другом я получаю следующую ошибку.

'...': тип, используемый в операторе using, должен быть неявно конвертируемым в 'System.IDisposable'

Когда я имею в виду объект 'context', я имею в виду объект, автоматически созданный при работе с LINQ to SQL.

Класс, в котором я работаю, реализует другой интерфейс, это может испортить этот контекстный объект?

using (TGDC context = new TGDC())
            {

            }

слово

с помощью

имеет красную волнистую линию под ним (ошибка).

Ответы [ 7 ]

36 голосов
/ 20 июля 2011

Вы должны добавить ссылку на System.Data.Linq.Я подозреваю, что это проблема.

8 голосов
/ 06 января 2012

Или, если вы используете Entity Framework, убедитесь, что у вас есть ссылка на System.Data.Entity и System.Data.Objects (C #: using / VB.NET: Imports).

6 голосов
/ 15 апреля 2013

Добавьте ссылку на сборку EntityFramework.dll, на которую ссылается проект, определяющий ваш класс контекста EF.

3 голосов
/ 21 июня 2013

Добавить ссылку на сборку EntityFramework

1 голос
/ 28 февраля 2013

Это старый вопрос, но так как я нашел его с помощью поиска Google:

Я испытал это, работая с веб-сайтом, который без проблем работал в Visual Studio 2010.

В Visual Studio 2012 и Entity Framework есть что-то странное;добавление EF в существующий проект приводит к установке EF 5.0 (пакет NuGet) без возможности придерживаться версии 4.0.

Комментарий этот ответ к связанному вопросу - вот что сделалореализация pop.

Похоже, что решением является обновление до версии EF, которую использует VS 2012, или использование VS 2010.

0 голосов
/ 20 июля 2011

Я получаю это периодически и какое-то время я всегда боролся с этим, потому что не сразу видно, что не так.Кажется, что все обручи были перепрыгнуты, но, увы, не так.В конце концов решение будет придерживаться.

В проекте, в котором вы пишете этот код, вы ссылаетесь на проект, в котором определен ваш «TGDC», но вы не ссылаетесь на System.Data.Linq.Вам нужно сослаться на обе эти сборки.Это действительно может произойти, только если вы используете какую-то многоуровневую архитектуру.

0 голосов
/ 20 июля 2011

В нем говорится, что TGDC не реализует интерфейс IDisposable.

Как выглядит объявление класса для TGDC?У вас есть больше ошибок компилятора?У вас есть несколько классов с именем TGDC в разных пространствах имен?

...