Csharp/C Sharp/Database ADO.net/Many to Many

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Deal with the many to many relation

using System;
using System.Data;            // use ADO.NET namespace
using System.Data.SqlClient;  // use SQL Server provider
class DataRelationExample
{
   public static void Main() 
   {
      SqlConnection thisConnection = new SqlConnection("server=(local)\\SQLEXPRESS;database=MyDatabase;Integrated Security=SSPI");
      SqlDataAdapter thisAdapter = new SqlDataAdapter("SELECT CustomerID, CompanyName FROM Customers", thisConnection);
      SqlCommandBuilder thisBuilder = new SqlCommandBuilder(thisAdapter);
      DataSet thisDataSet = new DataSet();
      SqlDataAdapter custAdapter = new SqlDataAdapter("SELECT * FROM Customers", thisConnection);
      SqlDataAdapter orderAdapter = new SqlDataAdapter("SELECT * FROM Orders", thisConnection);
      custAdapter.Fill(thisDataSet, "Customers");
      orderAdapter.Fill(thisDataSet, "Orders");
      DataRelation custOrderRel = thisDataSet.Relations.Add("CustOrders",
         thisDataSet.Tables["Customers"].Columns["CustomerID"],
         thisDataSet.Tables["Orders"].Columns["CustomerID"]);
         
      foreach (DataRow custRow in thisDataSet.Tables["Customers"].Rows)
      {
         Console.WriteLine("Customer ID: " + custRow["CustomerID"] + " Name: " + custRow["CompanyName"]);
         foreach (DataRow orderRow in custRow.GetChildRows(custOrderRel)) {
            Console.WriteLine("  Order ID: " + orderRow["OrderID"]);
         }
      }
      
      custOrderRel.Nested = true;
      thisDataSet.WriteXml(@"nwinddata.xml");
      Console.WriteLine(@"Successfully wrote XML output to file nwinddata.xml");
   }
}