1

我在下面有这段代码。获取数据并将数据属性设置为收集的值。

public struct TrblShootData
    {
       public List<string> Logins;
       public IEnumerable<Hieracrhy> Hierarchy;
       public IEnumerable<EmployeeTeam> EmpTeam; 
    }

  public TrblShootData TroubleShootData
   {
       get;
       private set;
   }

 class DataGetter
 { 
 public void GetData(string FirstName, string LastName, string Login, string Email, bool isFirstName, bool isLastName, bool isLogin, bool isEmail)
    {         
        List<string> logins = null;
        IEnumerable<Hieracrhy> hier = null;
        IEnumerable<EmployeeTeam> tmemp = null;

        TrblShootData tsData = new TrblShootData();

        queries q = BuildQuery(FirstName, LastName, Login, Email, isFirstName, isLastName, isLogin, isEmail);

        if (q.isValidQueries)
        {
            DataContext1 mscDB = new DataContext1 ();

            using (DataContext2 opsDB = new DataContext2 ())
            {                    
                tmemp = opsDB.ExecuteQuery<EmployeeTeam>(q.qryEmployeeTeam);

            }

            using (DataContext3 rptDB = new DataContext3 ())
            {                    
                hier = rptDB.ExecuteQuery<Hieracrhy>(q.qryHierarchy);

                if (hier != null)
                {
                    logins = hier.Select(s => s.SalesRepLogin).Distinct().ToList();
                }

            }

            tsData.EmpTeam = tmemp.Select(r=>r);
            tsData.Hierarchy = hier.Select(r => r);
            tsData.Logins = logins.Select(r => r).ToList();

            TroubleShootData = tsData;

        }//if                  
    }
  }

从另一个班级我尝试这样做:

 tshtr.GetData(txtFirstName.Text, txtLastName.Text, txtLogin.Text, txtEmail.Text, chkFirstName.Checked, chkLastName.Checked, chkLogin.Checked, chkEmail.Checked);

        gvEmpTeams.DataSource = tshtr.TroubleShootData.EmpTeam;
        gvHierarchy.DataSource = tshtr.TroubleShootData.Hierarchy;

        gvEmpTeams.DataBind();
        gvHierarchy.DataBind();

但是在 DataBind() 我收到一个错误,说我无法从封闭的阅读器中阅读。

我不明白为什么在我在 usings 中分配值后按上述设置属性时会引发此错误。所以我没有看到这是如何尝试使用封闭式阅读器。

谢谢你的帮助!

4

1 回答 1

1

由于延迟执行,您的查询仅在您关闭 DataContext 后数据绑定引擎枚举其结果时执行。

您需要.ToList()在关闭 DataContext 之前调用以强制立即对其进行评估。

于 2012-12-19T01:19:22.983 回答