Я видел несколько сообщений здесь, которые похожи на мои, однако я не мог найти ответ на мою конкретную проблему.Исключение при попытке вставить объекты с использованием EF4.3.1
Дело в том, что я пытаюсь вставить объект в БД с помощью навигатора. двигательный однако я постоянно получаю: The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
исключение
using (EntitiesDatabase context = new EntitiesDatabase())
{
if (UserHandler.Instance.User is Admin)
{
((Admin)UserHandler.Instance.User).ProjectManagers.Add(
new ProjectManager(firstNameTextBox.Text, lastNameTextBox.Text, usernameTextBox.Text, passwordTextBox.Text));
}
else if (UserHandler.Instance.User is ProjectManager)
{
((ProjectManager)UserHandler.Instance.User).Developers.Add(
new Developer(firstNameTextBox.Text, lastNameTextBox.Text, usernameTextBox.Text, passwordTextBox.Text));
}
context.SaveChanges();
}
Ошибка генерируется в строке 5-6 кода (u.ProjectManagers.Add(new ProjectManager(...))
Для ясности: UserHandler
является singelton, который держит ссылку на зарегистрированный пользователь. Пользователь имеет свойство навигации
public virtual ICollection<ProjectManager> ProjectManagers { get; set; }
Это должно фактически вставить новый менеджер проекта к БД после я SaveChanges()
от контекста.
Я провел несколько простых тестов для небольших проектов (например, в учебных пособиях PluralSight), и это действительно сработало ... по какой-то причине эти же строки не работают. Кажется, что новый менеджер проектов, который я создаю, находится перед тем, как попытаться вставить его в навигацию. двигательный потому что я никогда не добираюсь до строки с изменениями ...
Из других ответов, которые я видел, я догадался, что оператор using
по какой-то причине распоряжается вещами до того, как достиг конечной скобки. Я не понимаю, почему ... Может ли кто-нибудь указать мне правильный путь?
Кстати, это не домашние задания, это мой проект, в котором я пытаюсь изучить C#, EF и другие технологии.
на какой линии вы получаете сообщение об ошибке? – Reniuz
забыл указать. im получить его в строке, где я пытаюсь добавить вещи в db ... u.ProjectManagers.Add (новый ProjectManager (...)) 6-я строка в коде –
Я думаю, вам нужно работать с текущим контекстом, а не с какой-то экземпляр пользовательского обработчика – Reniuz