通过构架dataSet读写有父子关系的xml文档

namespace DataRead.Data
{

 using System;
 using System.Data;
 using System.Runtime.Serialization;

 /// <summary>
 /// OrderRequestData继承DataSet类
 /// </summary>
 


 //[SerializableAttribute]
 public class OrderRequestData : DataSet
 {
  
  public DataTable OrderRequestTable;
  public DataTable OrderTable;
  public DataTable OrderDetailTable;
  /// <summary>
  /// Table OrderRequestData
  /// </summary>
  public const String SessionID_OrderRequestData  = "sessionID";
 
  /// <summary>
  /// Table Order
  /// </summary>
  public const String Values_Order        = "values";
  public const String CustomerNo_Order    = "customerNo";
  public const String Remark_Order  = "remark";
  public const String RequireDate_Order   = "requireDate";
  public const String OrderNo_Order  = "orderNo";

  /// <summary>
  /// Table OrderDetail
  /// </summary>
  ///

  public const String ProducetNo_OrderDetail     = "productNo";
  public const String Price_OrderDetail          = "price";
  public const String Quantity_OrderDetail       = "quantity";
  public const String Remark_OrderDetail     = "remark"; 
  public const String OrderNo_OrderDetail     = "orderNo";
  public const String LineNo_OrderDetail     = "lineNo";
  public const String Discount_OrderDetail       = "discount";

  public OrderRequestData(SerializationInfo info, StreamingContext context) : base(info, context)
  {
  }

  public OrderRequestData()
  {
   BuildDataTables();
  }


  private void BuildDataTables()
  {
   //建立表 OrderRequestData 结构
   OrderRequestTable = new DataTable("OrderRequestData");
   DataColumnCollection oRColumn = OrderRequestTable.Columns;
   oRColumn.Add( SessionID_OrderRequestData,typeof(System.String));
   oRColumn.Add( "OrderRequestData_Id",typeof(System.Int32));
   this.Tables.Add(OrderRequestTable);
   this.Tables["OrderRequestData"].Columns["OrderRequestData_Id"].ColumnMapping = MappingType.Hidden;
   this.Tables["OrderRequestData"].Columns["OrderRequestData_Id"].AutoIncrement =true;
   //建立表 Order 结构
   OrderTable = new DataTable("Order");
   DataColumnCollection orderColumn = OrderTable.Columns;
   orderColumn.Add( "OrderRequestData_Id",typeof(System.Int32));
   orderColumn.Add( Values_Order,typeof(System.String));
   orderColumn.Add( CustomerNo_Order,typeof(System.String));
   orderColumn.Add( Remark_Order,typeof(System.String));
   orderColumn.Add( RequireDate_Order,typeof(System.String));
   orderColumn.Add( OrderNo_Order,typeof(System.String));
   this.Tables.Add(OrderTable);
   this.Tables["Order"].Columns["OrderRequestData_Id"].ColumnMapping = MappingType.Hidden;
   this.Tables["Order"].Columns["OrderRequestData_Id"].AutoIncrement = true;
   //建立表 OrderDetail 结构
   OrderDetailTable = new DataTable("OrderDetail");
   DataColumnCollection orderDetailColumn = OrderDetailTable.Columns;
   orderDetailColumn.Add( ProducetNo_OrderDetail,typeof(System.String));
   orderDetailColumn.Add( Price_OrderDetail,typeof(System.String));
   orderDetailColumn.Add( Quantity_OrderDetail,typeof(System.String));
   orderDetailColumn.Add( Remark_OrderDetail,typeof(System.String));
   orderDetailColumn.Add( OrderNo_OrderDetail,typeof(System.String));
   orderDetailColumn.Add( LineNo_OrderDetail,typeof(System.String));
   orderDetailColumn.Add( Discount_OrderDetail,typeof(System.String));
   this.Tables.Add(OrderDetailTable);

   //建立表关系
      this.Relations.Add("Order_OrderDetail",this.Tables["Order"].Columns["orderNo"],this.Tables["OrderDetail"].Columns["orderNo"]);
   this.Relations["Order_OrderDetail"].Nested = true;

   this.Relations.Add("OrderRequestData_Order",this.Tables["OrderRequestData"].Columns["OrderRequestData_Id"],this.Tables["Order"].Columns["OrderRequestData_Id"]);
      this.Relations["OrderRequestData_Order"].Nested = true;
   
  }

  
 }
}

Xml文件结构如下

<?xml version="1.0" standalone="yes" ?>

- < NewDataSet >
- < OrderRequestData >
  < sessionID > sessionID </ sessionID >
- < Order >
  < values > values </ values >
  < customerNo > customnerNo </ customerNo >
  < remark > remark </ remark >
  < requireDate > requireDate </ requireDate >
  < orderNo > orderNo </ orderNo >
- < OrderDetail >
  < productNo > producetNo </ productNo >
  < price > price </ price >
  < quantity > quantity </ quantity >
  < remark > remark </ remark >
  < orderNo > orderNo </ orderNo >
  < lineNo > lineNo </ lineNo >
  < discount > discount </ discount >
  </ OrderDetail >
- < OrderDetail >
  < productNo > productNo </ productNo >
  < price > price </ price >
  < quantity > quantity </ quantity >
  < remark > remark </ remark >
  < orderNo > orderNo </ orderNo >
  < lineNo > lineNo </ lineNo >
  < discount > discount </ discount >
  </ OrderDetail >
  </ Order >
  </ OrderRequestData >
  </ NewDataSet >
 
只要使用OrderRequestData的实例添加表中的行就可以填充DataSet,表关系已经确定好了,所以不需要再考虑,不过注意的是父行必须和子行的值相对应的
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值