Исключение «Указанное именованное соединение либо не найдено в конфигурации, не предназначено для использования с поставщиком EntityClient, либо недопустимо».очевидно, не является результатом неудачного разрешения зарегистрированного типа, но это исключение EF.
Дизайнер EF должен был создать контекст с конструктором, подобным этому:
public MyObjectContext() : base("name=MyObjectContext", "MyObjectContext")
{
...
}
и добавилСтрока подключения к app.config / web.config.Предполагая, что дизайнер не сделал этого неправильно, я бы исключил, что это «именованное соединение» «не предназначено для использования с поставщиком EntityClient или недопустимо».Остается, что «именованное соединение» «не найдено в конфигурации».
Вы проверили, находится ли строка соединения в app.config / web.config проекта, в котором вы решаетеObjectContext ?Например, если у вас есть модель EF в отдельной библиотеке классов, то EF создает app.config с соответствующей строкой соединения в этом проекте.Если вы используете эту модель из другого проекта, который ссылается на вашу библиотеку классов EF, вам нужно вручную скопировать строку подключения в app.config / web.config этого проекта.EF не будет изучать конфигурацию вашей библиотеки классов.
Относительно вашего вопроса, как правильно уничтожить ObjectContext, самый общий ответ будет: «Когда он вам больше не нужен».Трудно дать совет, не зная контекст вашего проекта.Если вам нужен доступ к данным одним способом, я думаю, вы могли бы написать:
using (var context = container.Resolve<ObjectContext>())
{
// your EF operations
}