我在这里看到了一些看起来像我的帖子,但是我找不到我的具体问题的答案。
问题是我正在尝试使用导航将实体插入数据库。支柱。但是我不断得到: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
是一个单例,包含对登录用户的引用。用户有一个导航属性
public virtual ICollection<ProjectManager> ProjectManagers { get; set; }
在我SaveChanges()
对上下文执行之后,这实际上应该将新项目经理插入数据库。
我已经对较小的项目(如 PluralSight 教程中的项目)进行了一些简单的测试,并且它确实有效......由于某种原因,这些相同的行不起作用。在我尝试将其插入导航之前,似乎正在处理我正在创建的新项目经理。支柱。因为我永远不会进入保存更改行...
从我看到的其他答案中,我猜测该using
语句出于某种原因在到达结束括号之前就处理了一些事情。我不明白为什么...有人可以指出我正确的方式吗?
顺便说一句,这不是家庭作业,这是我的一个项目,我正在尝试学习 C#、EF 和其他技术。