ここで私のような投稿をいくつか見ましたが、特定の問題に対する答えが見つかりませんでした。
問題は、nav を使用してエンティティを DB に挿入しようとしているということです。小道具。しかし、私は常に得ています: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; }
コンテキストで行った後、実際には新しいプロジェクトマネージャーをDBに挿入する必要がSaveChanges()
あります。
小規模なプロジェクト (PluralSight チュートリアルのものなど) でいくつかの簡単なテストを行ったところ、うまくいきました...何らかの理由で、これらの同じ行が機能しません。私が作成している新しいプロジェクト マネージャーは、ナビゲーションに挿入しようとする前に破棄されているようです。小道具。変更を保存する行にたどり着かないので...
私が見た他の回答から、using
ステートメントが何らかの理由で終了ブラケットに到達する前に物を処分すると推測しました。理由がわかりません...誰かが私を正しい方法で指摘できますか?
ところで、これは宿題ではありません。C#、EF、その他のテクノロジを学ぼうとしている私のプロジェクトです。