代码如下:
 protected void Page_Load(object sender, EventArgs e)
    {
        Category category = new Category();
        DataSet db = new DataSet();
        IList<CategoryInfo> list = category.GetCategories();
        db=NHibernateHelper.ConvertToDataSet<CategoryInfo>(list);
     ( NHibernateHelper.ConvertToDataSet<CategoryInfo>(list)这句表示把泛型转换成dataset);
        DataColumn paretncolum = db.Tables["CategoryInfo"].Columns["Id"];
        Product procuts = new Product();
        IList<ProductInfo> dlist = procuts.GetProducts();
        db=NHibernateHelper.ConvertToDataSet<ProductInfo>(dlist);
      <db得到的是dataset数据集>
        DataColumn childcolumn = db.Tables["ProductInfo"].Columns["categoryId"];
        DataRelation relprocust;
        relprocust = new DataRelation("customers", paretncolum, childcolumn);
错误:在不同 DataSet 中的表之间不能建立关系
        db.Relations.Add(relprocust);
        DataGrid1.DataSource = db.Tables["categoryInfo"];
        DataGrid1.DataBind();
   
    }求救高手!谢谢了。

解决方案 »

  1.   

    改为下面的试试
    IList<ProductInfo> dlist = procuts.GetProducts();
    foreach(DataTable dt in NHibernateHelper.ConvertToDataSet<ProductInfo>(dlist).Tables)
    {
    db.Tables.Add(dt);
    }
      

  2.   

    忘加括号了
    IList<ProductInfo> dlist = procuts.GetProducts();
    foreach(DataTable dt in (NHibernateHelper.ConvertToDataSet<ProductInfo>(dlist)).Tables)
    {
    db.Tables.Add(dt);
    }
      

  3.   

    将需要建立关系的表导入到一个dataset中即可。
    楼上的是把2个dataset合并到一个里面来了,如果开销不大也无妨
      

  4.   

    你第二次给
    db赋值的 时候 一次的赋值的 结构 已经不存在了了 db被重新覆盖了
    你怎么还能使用之前的 列呢......Category category = new Category();
            DataSet db = new DataSet();
            IList<CategoryInfo> list = category.GetCategories();
            db=NHibernateHelper.ConvertToDataSet<CategoryInfo>(list);
         //( NHibernateHelper.ConvertToDataSet<CategoryInfo>(list)这句表示把泛型转换成dataset);
           
            Product procuts = new Product();
            IList<ProductInfo> dlist = procuts.GetProducts();
            DataSet db2 = NHibernateHelper.ConvertToDataSet<ProductInfo>(dlist);
      //    <db得到的是dataset数据集>
    db.Tables.Add(db2.Tables[0]);
    DataColumn paretncolum = db.Tables["CategoryInfo"].Columns["Id"];
            DataColumn childcolumn = db.Tables["ProductInfo"].Columns["categoryId"];
            DataRelation relprocust;
            relprocust = new DataRelation("customers", paretncolum, childcolumn);
    //错误:在不同 DataSet 中的表之间不能建立关系
            db.Relations.Add(relprocust);
            DataGrid1.DataSource = db.Tables["categoryInfo"];
            DataGrid1.DataBind();