我觉得做不了

解决方案 »

  1.   

    好象只能用datset创建关系,在数据库中已有的关系,好象引用不出来
      

  2.   

    我也想知道,现阶段只知道要在dataset中建,不能把数据库里的引用出来
      

  3.   

    选中表--->右键 ---> 新建关系--->。。
      

  4.   

    使用强类型数据集在设计时添加关系,也可以通过DataSet.Relations.Add动态添加关系
    http://blog.csdn.net/zhzuo/archive/2004/08/06/67016.aspx
      

  5.   

    楼主的意思是直接从数据库中把关系映射到DataSet上,而不是应用zhzuo的做法。我和楼主的意思一样。作不到!
      

  6.   

    呵呵, 我倒是找到一种方法,欢迎大家指教:string myConnString = "Provider=SQLOLEDB;Data Source=server;Initial Catalog=Duwamish7;Integrated Security=SSPI;Connect Timeout=30";OleDbConnection conn = new OleDbConnection(myConnString);
    DataSet ds = new DataSet();
    using (conn)
    {
        conn.Open();
        //取表
        DataTable dataTalbeschema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
    new Object[]{ null, null, null,"TABLE" } );
        //取表结构
        foreach (DataRow tableRow in dataTalbeschema.Rows)
        {
    String tableName = tableRow["Table_Name"].ToString();
    string sql = "select  * from " + tableName ;
    OleDbDataAdapter oda= new OleDbDataAdapter(sql,conn);
    oda.MissingSchemaAction = MissingSchemaAction.AddWithKey;
    oda.FillSchema(ds,SchemaType.Mapped,tableName);
        }
        //添加Relation
        DataTable dtfk = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Foreign_Keys,null );
        foreach (DataRow fkRow in dtfk.Rows)
        {
    String fkName = fkRow["Fk_Name"].ToString();
    DataColumn parentColumn = ds.Tables[fkRow["Pk_Table_Name"].ToString()].Columns[fkRow["Pk_Column_Name"].ToString()]; 
    DataColumn childColumn = ds.Tables[fkRow["Fk_Table_Name"].ToString()].Columns[fkRow["Fk_Column_Name"].ToString()]; 
    ds.Relations.Add(fkName,parentColumn,childColumn);
       }
       conn.Close();
    }详细了解请参看MSDN "GetOleDbSchemaTable"帮助