A megvalósítás első lépéseként a már szokásos módon létrehozunk egy kapcsolatot az MS SQL szerver Northwind példaadatbázisával.
SqlConnection connection = new SqlConnection("Data Source="+textBox1.Text+";uid="+textBox2.Text+";password="+textBox3.Text+";initial catalog=Northwind;Connect Timeout=3");
connection.Open();
Ezt követően több lekérdezést is futtatunk, melyek eredményét egy DataSet objektumban tároljuk el.
DataSet ds = new DataSet();
Így lesz egy lekérdezésünk az Orders táblára.
SqlDataAdapter da1 = new SqlDataAdapter("select * from Orders", connection);
da1.Fill(ds, "Orders");
Lesz egy lekérdezés az Order Details táblára, mely az OrderID mezőn keresztül kapcsolódhat az Order tábla szintén OrderID nevű mezőjéhez.
SqlDataAdapter da2 = new SqlDataAdapter("select * from \"Order Details\"", connection);
da2.Fill(ds, "Order Details");
Készítünk egy lekérdezést a Employees táblához is. Ez szintén az Orders táblához kapcsolódhat az EmployeeID mező alapján.
SqlDataAdapter da3 = new SqlDataAdapter("select * from Employees", connection);
da3.Fill(ds, "Employees");
Végül a Products táblára is futtatunk egy lekérdezést. Ezt majd az Order Details tábla ProductID mezőjéhez köthetjük.
SqlDataAdapter da4 = new SqlDataAdapter("select * from Products", connection);
da4.Fill(ds, "Products");
E négy táblát felhasználva már elég bonyolult kapcsolatokat alakíthatunk ki.
Először létrehozunk egy Orders relations nevű kapcsolatot. Ezt az Orders és Order Details táblák között hozzuk létre a közös OrderID mező segítségével.
ds.Relations.Add("", ds.Tables["Orders"].Columns["OrderID"], ds.Tables["Order Details"].Columns["OrderID"], false);
Ezt követően egy Employee relation nevű kapcsolatot létesítünk, szintén az Orders tábla és az Employees tábla között az EmployeeID mező segítségével.
ds.Relations.Add("Employee relation", ds.Tables["Orders"].Columns["EmployeeID"], ds.Tables["Employees"].Columns["EmployeeID"], false);
Végül a Product relation nevű kapcsolat kerül létrehozásra. Ezt az Order Details és a Products tábla között hozzuk létre a ProductID mező segítségével.
ds.Relations.Add("Product relation", ds.Tables["Order Details"].Columns["ProductID"], ds.Tables["Products"].Columns["ProductID"], false);
A mellékelt példában két DataGrid-et helyeztünk el. Az elsőhöz a DataSet Orders nevű tábláját kötjük, így itt alaphelyzetben az Orders lekérdezés eredménye lesz látható. Ha a sorok elején lévő kis pluszjelre kattintunk, akkor megjelenik két link. Az egyik az Orders relation, míg a másik az Employee relation kapcsolatra mutat. Látható tehát, hogy ahány relációt alakítunk ki egy táblával, itt annyi linket kapunk.
dataGrid1.SetDataBinding(ds, "Orders");
A másik DataGrid esetén az Orders táblán belüli Orders relation nevű kapcsolatot kötjük. Ennek a megjelenítésnek az lesz a legfontosabb tulajdonsága, hogy amikor változik az aktuális sor a dataGrid1-ben, akkor a dataGrid2-ben lévő sorok is változnak, méghozzá úgy, hogy csak azok a tételek lesznek láthatóak, melyeket az első tábla adott rekordjához tartoznak.
Ha a dataGrid2-nél a sorok elején lévő kis pluszjelre kattintunk, akkor megjelenik egy link, mely a Product relation kapcsolatra mutat.
dataGrid2.SetDataBinding(ds, "Orders.Orders relation");
}