関連付けのある私のドメインモデルは次のとおりです。
Project
多くTask
のTask
多くUser
の
の状態に応じてUser
、プロジェクトのフィールドを更新する必要があります。私の質問は次のとおりです。
var projects = from project in _data.projects
join task in _data.tasks on project.ProjectID equals task.ProjectID
join user in _data.usersactive on task.TaskID equals user.TaskID
where user.Active == false
select project;
これにより、非アクティブなユーザーがいるプロジェクトを取得できます。
foreach (Project project in projects)
{
bool needUpdate = false;
foreach (Task task in project.tasks)
{
foreach (User user in task.users)
{
// Depending on state of user
// needUpdate = true;
}
}
// If needUpdate = true
// Do something
}
明らかに、このコードは私を取得しようとしています:
There is already an open DataReader associated with this Connection which must be closed first.
ただし、私はMySQLを使用しているため、単純にを活用することはできませんMultipleActiveResultSets=True
。
foreach
これらの関連付けを熱心にロードして、ループ内でアクセスできるようにするにはどうすればよいですか?