码迷,mamicode.com
首页 > 其他好文 > 详细

DataSet DataRelation

时间:2014-08-14 00:52:37      阅读:335      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   color   os   io   strong   

 

DataTable.ChildRelations

Gets the collection of child relations for this DataTable.

A DataRelation defines the relationship between two tables. Typically, two tables are linked through a single field that contains the same data. For example, a table which contains address data may have a single field containing codes that represent countries/regions. A second table that contains country/region data will have a single field that contains the code that identifies the country/region, and it is this code which is inserted into the corresponding field in the first table. A DataRelation, then, contains at least four pieces of information: (1) the name of the first table, (2) the column name in the first table, (3) the name of the second table, and (4) the column name in the second table.

bubuko.com,布布扣
   private static void GetChildRowsFromDataRelation()
    {
        /* For each row in the table, get the child rows using the
        ChildRelations. For each item in the array, print the value
        of each column. */
        DataTable table = CreateDataSet().Tables["Customers"];
        DataRow[] childRows;
        foreach(DataRelation relation in table.ChildRelations)
        {
            foreach(DataRow row in table.Rows)
            {
                PrintRowValues(new DataRow[] {row}, "Parent Row");
                childRows = row.GetChildRows(relation);
                // Print values of rows.
                PrintRowValues(childRows, "child rows");
            }
        }
    }

    public static DataSet CreateDataSet()
    {
        // create a DataSet with one table, two columns
        DataSet dataSet = new DataSet();

        // create Customer table
        DataTable table = new DataTable("Customers");
        dataSet.Tables.Add(table);
        table.Columns.Add("customerId", typeof(int)).AutoIncrement = true;
        table.Columns.Add("name", typeof(string));
        table.PrimaryKey = new DataColumn[] { table.Columns["customerId"] };

        // create Orders table
        table = new DataTable("Orders");
        dataSet.Tables.Add(table);
        table.Columns.Add("orderId", typeof(int)).AutoIncrement = true;
        table.Columns.Add("customerId", typeof(int));
        table.Columns.Add("amount", typeof(double));
        table.PrimaryKey = new DataColumn[] { table.Columns["orderId"] };

        // create relation
        dataSet.Relations.Add(dataSet.Tables["Customers"].Columns["customerId"],
            dataSet.Tables["Orders"].Columns["customerId"]);
    
        // populate the tables 
        int orderId = 1;
        for(int customerId=1; customerId<=10; customerId++)
        {
            // add customer record
            dataSet.Tables["Customers"].Rows.Add(
                new object[] { customerId, 
                string.Format("customer{0}", customerId) });
        
            // add 5 order records for each customer 
            for(int i=1; i<=5; i++)
            {
                dataSet.Tables["Orders"].Rows.Add(
                    new object[] { orderId++, customerId, orderId * 10 });
            }
        }

        return dataSet;
    }

    private static void PrintRowValues(DataRow[] rows, string label)
    {
        Console.WriteLine("\n{0}", label);
        if(rows.Length <= 0)
        {
            Console.WriteLine("no rows found");
            return;
        }
        foreach(DataRow row in rows)
        {
            foreach(DataColumn column in row.Table.Columns)
            {
                Console.Write("\table {0}", row[column]);
            }
            Console.WriteLine();
        }
    }
View Code

 DataRow.GetParentRows Method

DataRow.GetChildRows Method

DataTable.Constraints Property

bubuko.com,布布扣
private void CreateConstraint(DataSet dataSet, 
    string table1, string table2, string column1, string column2)
{
    ForeignKeyConstraint idKeyRestraint = new 
        ForeignKeyConstraint(dataSet.Tables[table1].Columns[column1],
        dataSet.Tables[table2].Columns[column2]);

    // Set null values when a value is deleted.
    idKeyRestraint.DeleteRule = Rule.SetNull;
    idKeyRestraint.UpdateRule = Rule.Cascade;

    // Set AcceptRejectRule to cascade changes.
    idKeyRestraint.AcceptRejectRule = AcceptRejectRule.Cascade;

    dataSet.Tables[table1].Constraints.Add(idKeyRestraint);
    dataSet.EnforceConstraints = true;
}
View Code

 

DataTable Constraints

http://msdn.microsoft.com/en-us/library/st1t2c35(v=vs.110).aspx

ForeignKeyConstraint

Rule setting

Description

Cascade                    

Delete or update related rows.

SetNull                    

Set values in related rows to DBNull.

SetDefault                    

Set values in related rows to the default value.

None                    

Take no action on related rows. This is the default.

UniqueConstraint

 

DataSet DataRelation,布布扣,bubuko.com

DataSet DataRelation

标签:des   style   blog   http   color   os   io   strong   

原文地址:http://www.cnblogs.com/kevinygq/p/3911227.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!