using System;
using System.Data;
namespace CreateDataRelation
{
class Program
{
static void Main(string[] args)
{
DataSet ds = new DataSet();
// Create the parent table and add to the DataSet
DataTable dt1 = new DataTable("Table-1");
dt1.Columns.Add("Id1", typeof(int));
dt1.Columns.Add("Id2", typeof(int));
dt1.Columns.Add("Field1", typeof(string)).MaxLength = 50;
ds.Tables.Add(dt1);
// Create the child table and add to the DataSet
DataTable dt2 = new DataTable("Table-2");
dt2.Columns.Add("Id3", typeof(int));
dt2.Columns.Add("Id1", typeof(int));
dt2.Columns.Add("Id2", typeof(int));
dt2.Columns.Add("Field2", typeof(string)).MaxLength = 50;
ds.Tables.Add(dt2);
// Create the data relation and add to the DataSet
DataRelation dr = new DataRelation("DataRelation",
new DataColumn[] { dt1.Columns["Id1"], dt1.Columns["Id2"] },
new DataColumn[] { dt2.Columns["Id1"], dt2.Columns["Id2"] },
true);
ds.Relations.Add(dr);
try
{
AddParentRecord(dt1, 1,10, "Value 1.1");
AddParentRecord(dt1, 2,20, "Value 1.2");
AddChildRecord(dt2, 100, 1,10, "Value 2.100");
AddChildRecord(dt2, 101, 2,20, "Value 2.101");
AddChildRecord(dt2, 102, 3,30, "Value 2.102");
}
catch (Exception ex)
{
Console.WriteLine("Error: {0}\n", ex.Message);
}
Console.WriteLine("Press any key to continue.");
Console.ReadKey();
}
private static void AddParentRecord(
DataTable dt, int id1, int id2, string field1)
{
Console.WriteLine("Adding parent record: {0}, {1}, {2}",
id1, id2, field1);
dt.Rows.Add(new object[] { id1, id2, field1 });
Console.WriteLine("Done.\n");
}
private static void AddChildRecord(
DataTable dt, int id3, int id1, int id2, string field2)
{
Console.WriteLine("Add child record: {0}, {1}, {2}, {3}",
id3, id1, id2, field2);
dt.Rows.Add(new object[] { id3, id1, id2, field2 });
Console.WriteLine("Done.\n");
}
}
}
وضيح : در مثال بالا از متد زیر برای رابطه بين دو جدول استفاده شده است.
Data relation (string relation name, data column parent col, data column child col)
كه در آن :
Relation name : نام رابطهاي مي باشد كه به جداولمان نسبت مي دهيم.
Parent col : نام فيلد يا ستوني از جدول والد مي باشد كه مي خواهيم رابطه را بر روي آن برقرار كنيم.
Child cd : نام فيلد يا ستوني از جدول فرزند مي باشد كه رابطه بر روي آن ستون برقرار خواهد شد.
PATARELATION : به 6 نوع Overload مي شود كه متد بالا نيز يكي از اين روشها بوده اين شش روش عبارتند از :
DataRelation(string relationName, DataColumn parentCol, DataColumn childCol)
DataRelation(string relationName, DataColumn[] parentCols, DataColumn[] childCols)
DataRelation(string relationName, DataColumn parentCol, DataColumn childCol, bool
createConstraints)
DataRelation(string relationName, DataColumn[] parentCols, DataColumn[] childCols,
bool createConstraints)
DataRelation(string relationName, string parentTableName, string childTableName,
string[] parentColumnNames, string[] childColumnNames, bool isNested)
DataRelation(string relationName, string parentTableName, string
parentTableNamespace, string childTableName, string childTableNamespace, string[]
parentColumnNames, string[] childColumnNames, bool isNested)
بعد از اينكه برنامه سعي كرد تا مقداري را در جدول فرزند قرار دهد كه آن مقدار قبلاً در جدول والد وارد نشده بود، سيستم خطايي را به كاربر نشان داد.