天一剑客

首页 新随笔 联系 管理
在.Framework框架下,采用多层结构设计的系统中,如果需要从Dataset生成派生类作为数据集在各个层中传递数据,当使用WebService时,系统会提示“命名空间重复”错误。示例:
Region派生类
using System;
using System.Data;
using System.Runtime;
using System.Runtime.Serialization;
namespace Human.Common.Data
{
 
/// <summary>
 
/// RegionData 的摘要说明。
 
/// 区域信息
 
/// </summary>

 
 [System.ComponentModel.DesignerCategory(
"Code")]
 [SerializableAttribute]
 
public class RegionData: DataSet
 
{
  
//定义字段属性
  public const String REGION_TABLE           ="Regions";
  
public const String REGION_ID_FIELD        ="RegionID";
  
public const String REGION_NAME_FIELD      ="RegionName";
  
public const String PHONE_FIELD            ="Phone";
  
public const String EMAIL_FIELD            ="Email";
  
public const String LINK_MAN_FIELD         ="Linkman";
  
public const String IS_PREFECTURE_FIELD    ="IsPrefecture";
  
public const String PARENT_REGION_ID_FIELD ="ParentRegionID";
  
public const String IS_ROOT_FIELD          ="IsRoot";
  
public const String IS_LEAF_FIELD          ="IsLeaf";
  
public RegionData()
  
{
   
this.Namespace="RegionData";//如果没有指定命名空间,WebForm或者WinForm引用时就出错。

   BuildRegionTables();
  }


  
//构建Region表
  private void BuildRegionTables()
  
{
   DataTable table
=new DataTable(REGION_TABLE);
   DataColumnCollection columns
=table.Columns;
   columns.Add(REGION_ID_FIELD,
typeof(System.String));
   columns.Add(REGION_NAME_FIELD,
typeof(System.String));
   columns.Add(PHONE_FIELD,
typeof(System.String));
   columns.Add(EMAIL_FIELD,
typeof(System.String));
   columns.Add(LINK_MAN_FIELD,
typeof(System.String));
   columns.Add(IS_PREFECTURE_FIELD,
typeof(System.Int32));
   columns.Add(PARENT_REGION_ID_FIELD,
typeof(System.String));
   columns.Add(IS_ROOT_FIELD,
typeof(System.Int32));
   columns.Add(IS_LEAF_FIELD,
typeof(System.Int32));
   
this.Tables.Add(table);
  }

 }

}

Language派生类
using System;
using System.Data;
using System.Runtime;
using System.Runtime.Serialization;
namespace Human.Common.Data
{
 
/// <summary>
 
/// LanguageData 的摘要说明。
 
/// 语种信息
 
/// </summary>

 
 [System.ComponentModel.DesignerCategory(
"Code")]
 [SerializableAttribute]
 
public class LanguageData:DataSet
 
{
  
public const String LANGUAGE_TABLE="Languages";
  
public const String LANGUAGE_ID_FIELD="LanguageID";
  
public const String LANGUAGE_NAME_FIELD="LanguageName";
  
public const String MARK_FIELD="Symbol";
  
public LanguageData()
  
{
   
this.Namespace="LanguageData";//如果没有指定命名空间,WebForm或者WinForm引用时就出错。
   BuildLanguageTable();
  }

  
private void BuildLanguageTable()
  
{
   DataTable table
=new DataTable(LANGUAGE_TABLE);
   DataColumnCollection columns
=table.Columns;
   columns.Add(LANGUAGE_ID_FIELD,
typeof(System.Int32));
   columns.Add(LANGUAGE_NAME_FIELD, 
typeof(System.String));
   columns.Add(MARK_FIELD, 
typeof(System.Int32));
   
this.Tables.Add(table);
  }

 }

}

WebService服务
....
 [WebMethod]
  
public LanguageData GetLanguages()
  
{
   PersonSystem person
=new PersonSystem();//Facade对象
   return person.GetLanguages();
  }

  [WebMethod]
  
public RegionData GetRegions()
  
{
   PersonSystem person
=new PersonSystem();
   
return person.GetRegions();
  }

 ....
posted on 2005-10-30 12:52  天一剑客  阅读(1803)  评论(0)    收藏  举报