Code/C#

[C#] DataSet, Primary Key, Foreign Key Constraint

Hide Code 2008. 12. 22. 18:32




using System;
using System.Data;
using System.Windows.Forms;

namespace ConstraintSample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            InitializeMyComponent();
        }

        private void InitializeMyComponent()
        {
            // Shop DataSet
            DataSet shopDataSet = new DataSet("Shop");

            // Person DataTable
            DataTable personDataTable = new DataTable("Person");
            shopDataSet.Tables.Add(personDataTable);

            DataColumn nameDataColumn = new DataColumn("Name", typeof(string));
            personDataTable.Columns.Add(nameDataColumn);

            // Primary Key
            DataColumn[] personPrimaryKey = { nameDataColumn };
            personDataTable.PrimaryKey = personPrimaryKey;

            personDataTable.Columns.Add("Age", typeof(int));
            personDataTable.Columns.Add("Address", typeof(string));

            personDataTable.Rows.Add("Paul", 21, "Seoul");
            personDataTable.Rows.Add("John", 31, "Tokyo");
            personDataTable.Rows.Add("Lora", 41, "Paris");

            // Visit DataTable
            DataTable visitDataTable = new DataTable("Visit");
            shopDataSet.Tables.Add(visitDataTable);

            DataColumn numberDataColumn = new DataColumn("Number", typeof(int));
            visitDataTable.Columns.Add(numberDataColumn);

            /// Primary Key
            DataColumn[] visitPrimaryKey = { numberDataColumn };
            visitDataTable.PrimaryKey = visitPrimaryKey;

            visitDataTable.Columns.Add("Person", typeof(string));
            visitDataTable.Columns.Add("Time", typeof(DateTime));
            visitDataTable.Columns.Add("Duration", typeof(TimeSpan));

            visitDataTable.Rows.Add(1, "Paul", DateTime.Now, TimeSpan.FromMinutes(5));
            visitDataTable.Rows.Add(2, "John", DateTime.Now, TimeSpan.FromMinutes(15));
            visitDataTable.Rows.Add(3, "Paul", DateTime.Now, TimeSpan.FromMinutes(25));
            visitDataTable.Rows.Add(4, "Paul", DateTime.Now, TimeSpan.FromMinutes(35));
            visitDataTable.Rows.Add(5, "John", DateTime.Now, TimeSpan.FromMinutes(45));
            visitDataTable.Rows.Add(6, "Lora", DateTime.Now, TimeSpan.FromMinutes(55));
            visitDataTable.Rows.Add(7, "Lora", DateTime.Now, TimeSpan.FromMinutes(10));

            // Foreign Key Constraint
            ForeignKeyConstraint myForeignKeyConstraint =
                new ForeignKeyConstraint(personDataTable.Columns[0], visitDataTable.Columns[1]);
            visitDataTable.Constraints.Add(myForeignKeyConstraint);

            // Binding
            this.dataGridView1.DataSource = shopDataSet;
            this.dataGridView1.DataMember = "Person";
            this.dataGridView2.DataSource = shopDataSet;
            this.dataGridView2.DataMember = "Visit";
        }
    }
}