DataRelationships.cs
上传用户:lxycoco
上传日期:2022-07-21
资源大小:38457k
文件大小:3k
源码类别:

C#编程

开发平台:

Others

  1. using System;
  2. using System.Data;
  3. public class DataRelationships
  4. {
  5. public static void Main()
  6. {
  7. // Create a dataset, add a couple of tables & a relationship
  8. DataSet   ds = CreateDataSetWithRelationships ( ) ;
  9. // Add some data to the tables
  10. DataRow   aBuilding = ds.Tables["Building"].NewRow() ;
  11. // Create a building
  12. aBuilding["BuildingID"] = 1 ;
  13. aBuilding["Name"] = "The Lowry" ;
  14. ds.Tables["Building"].Rows.Add ( aBuilding ) ;
  15. // Add a new room
  16. DataRow aRoom = ds.Tables["Room"].NewRow ( ) ;
  17. aRoom["RoomID"] = 1 ;
  18. aRoom["Name"] = "Reception" ;
  19. aRoom["BuildingID"] = 1 ;
  20. ds.Tables["Room"].Rows.Add ( aRoom ) ;
  21. // And add another room
  22. aRoom = ds.Tables["Room"].NewRow ( ) ;
  23. aRoom["RoomID"] = 2 ;
  24. aRoom["Name"] = "The Modern Art Gallery" ;
  25. aRoom["BuildingID"] = 1 ;
  26. ds.Tables["Room"].Rows.Add ( aRoom ) ;
  27. // Now use the relationships to loop through the data
  28. foreach ( DataRow theBuilding in ds.Tables["Building"].Rows )
  29. {
  30. DataRow[]  children = theBuilding.GetChildRows("Rooms") ;
  31. int   roomCount = children.Length ;
  32. Console.WriteLine ( "Building {0} contains {1} room{2}" , 
  33. theBuilding["Name"] ,
  34. roomCount ,
  35. roomCount > 1 ? "s" : "" ) ;
  36. // Loop through the rooms
  37. foreach ( DataRow theRoom in children )
  38. Console.WriteLine ( "Room: {0}" , theRoom["Name"]);
  39. }
  40. // And go the other way too...
  41. foreach ( DataRow theRoom in ds.Tables["Room"].Rows)
  42. {
  43. DataRow[]   parents = theRoom.GetParentRows ( "Rooms" ) ;
  44. foreach ( DataRow theBuilding in parents )
  45. Console.WriteLine ( "Room {0} is contained in building {1}" , theRoom["Name"] , theBuilding["Name"] ) ;
  46. }
  47. }
  48. public static DataSet CreateDataSetWithRelationships ( )
  49. {
  50. DataSet   ds = new DataSet ( "Relationships" ) ;
  51.     
  52. ds.Tables.Add ( CreateBuildingTable ( ) ) ;
  53. ds.Tables.Add ( CreateRoomTable ( ) ) ;
  54. // Create a simple relationship...
  55. ds.Relations.Add ( "Rooms" , ds.Tables["Building"].Columns["BuildingID"],ds.Tables["Room"].Columns["BuildingID"]) ;
  56. return ds ;
  57. }
  58. public static DataTable CreateBuildingTable ( ) 
  59. {
  60. DataTable  aBuilding = new DataTable ( "Building" ) ;
  61. aBuilding.Columns.Add ( new DataColumn ( "BuildingID" , typeof ( int ) ) ) ;
  62. aBuilding.Columns.Add ( new DataColumn ( "Name" , typeof ( string ) ) ) ;
  63. aBuilding.Constraints.Add ( new UniqueConstraint ( "PK_Building" , aBuilding.Columns[0] ) ) ;
  64. aBuilding.PrimaryKey = new DataColumn[] { aBuilding.Columns[0] } ;
  65. return aBuilding ;
  66. }
  67. public static DataTable CreateRoomTable ( )
  68. {
  69. DataTable  aRoom = new DataTable ( "Room" ) ;
  70. aRoom.Columns.Add ( new DataColumn ( "RoomID" , typeof ( int ) ) ) ;
  71. aRoom.Columns.Add ( new DataColumn ( "Name" , typeof ( string ) ) ) ;
  72. aRoom.Columns.Add ( new DataColumn ( "BuildingID" , typeof ( int ) ) ) ;
  73. aRoom.Constraints.Add ( new UniqueConstraint ( "PK_Room" , aRoom.Columns[0] ) ) ;
  74. aRoom.PrimaryKey = new DataColumn[] { aRoom.Columns[0] } ;
  75. return aRoom ;
  76. }
  77. }