在.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();
}


浙公网安备 33010602011771号