0

関連付けのある私のドメインモデルは次のとおりです。

  • 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これらの関連付けを熱心にロードして、ループ内でアクセスできるようにするにはどうすればよいですか?

4

1 に答える 1

1

linqセットを熱心にロードするには:

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).ToList();
于 2012-06-04T05:50:31.830 に答える