繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> Asp.Net开发 >> sql2005的xml字段类型在.net中的应用2

sql2005的xml字段类型在.net中的应用2

2007-10-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:为了对模型的集合信息进行描述,我们有设计了MServerGroupCollection(服务器群信息集合),MServer(服务器群下的服务器信息),MServerShopCollection(服务器对应的店铺集合) /// /// 服务器群信息集合 ///...

为了对模型的集合信息进行描述,我们有设计了MServerGroupCollection(服务器群信息集合),MServer(服务器群下的服务器信息),MServerShopCollection(服务器对应的店铺集合)

///

/// 服务器群信息集合

///

///

[Serializable()]

[XMLRoot("ServerGroups")]

public class MServerGroupCollection : List

{

///

/// 服务器群信息集合

///

public MServerGroupCollection()

{

this._MServerGroups = new List();

}

private List _MServerGroups;

public List MServerGroups

{

get

{

return this._MServerGroups;

}

set

{

this._MServerGroups = value;

}

}

}

///

/// 服务器群下的服务器信息集合

///

[XMLRoot("Servers")]

[Serializable()]

public class MServerCollection : List

{

///

/// 服务器群下的服务器信息集合

///

public MServerCollection()

{

this._MServers = new List();

}

private List _MServers;

public List MServers

{

get

{

return this._MServers;

}

set

{

this._MServers = value;

}

}

}

///

/// 服务器对应的店铺集合

///

[Serializable()]

[XMLRoot(ElementName = "Shops", Namespace = "http://www.linkedu.com.cn/MServerShop.xsd")]

public class MServerShopCollection

{

private List _MServerShops;

[XMLElement("Shop")]

public List MServerShops

{

get

{

return this._MServerShops;

}

set

{

this._MServerShops = value;

}

}

///

/// 服务器对应的店铺集合类

///

public MServerShopCollection()

{

this._MServerShops = new List();

}

}

经分析,服务器对应的店铺信息可用XML存储,设计格式如下(用xsd描述,设计好后,我们把它创建到数据库中)

CREATE XML SCHEMA COLLECTION [dbo].[MServerShop] AS

N'

'

最后,我设计了(服务器群信息 ES_ServerGroup),(服务器群下的服务器信息 ES_Server)的数据表, 在 ES_Server 数据表中,我们把服务器对应的店铺信息放在ES_Server数据表下用XML表示,并加入上边设计的xsd约束。

CREATE TABLE [dbo].[ES_ServerGroup](

[ServerGroupID] [int] NOT NULL,

[ServerGroupName] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL,

CONSTRAINT [PK_ES_SERVERGROUP] PRIMARY KEY CLUSTERED

(

[ServerGroupID] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

CREATE TABLE [dbo].[ES_Server](

[ServerID] [int] NOT NULL,

[ServerGroupID] [int] NULL,

[ServerName] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL,

[IP] [nvarchar](15) COLLATE Chinese_PRC_CI_AS NULL,

[DomainName] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,

[Dir] [nvarchar](255) COLLATE Chinese_PRC_CI_AS NULL,

[Url] [nvarchar](255) COLLATE Chinese_PRC_CI_AS NULL,

[ServerShops] [XML](CONTENT [dbo].[MServerShop]) NULL,

CONSTRAINT [PK_ES_SERVER] PRIMARY KEY CLUSTERED

(

[ServerID] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

下一步,我开始设计数据访问接口,然后设计数据访问层和业务层,最后设计表现层。

为了演示方便,Demo中我省去了接口的书写和业务层,我在表现层直接调用了数据访问层

数据访问层代码如下:

///

/// 服务器群下的服务器信息数据访问层

///

public class DServer

{

#region constructor

public DServer()

{

}

#endregion

#region public method

#region 得到当前

#region 得到某服务器信息 MServer GetMServer(int _ServerID)

///

/// 得到某服务器信息

///

/// 服务器的ServerID

/// 得到某服务器信息

public MServer GetMServer(int _ServerID)

{

DataProvider dp = SqlTools.HelpWWW.DataProviderUse;

using (IDbConnection conn = dp.GetConnection())

{

Common.DataAccess.ORMapping.IConvert ic = dp.GetIConvert();

Common.DataAccess.ORMapping.Mapping m = ic.GetNewMapping();

m.AddSql("select * from ES_Server where ");

m.AddSql(" ServerID=");

m.AddSql("ServerID", _ServerID);

using (IDataReader idr = m.ExecuteReader(conn))

{

if (idr.Read())

{

return new MServer(_ServerID, idr["ServerName"].ToString(), idr["IP"].ToString(), idr["DomainName"].ToString(), idr["Dir"].ToString(), idr["Url"].ToString(), (int)idr["ServerGroupID"], idr["ServerShops"].ToString());

}

}

return null;

}

}

#endregion

#region 关于MServerShop的操作

#region 得到服务器对应的店铺集合 MServerShopCollection GetMServerShop(int _ServerID)

///

/// 得到服务器对应的店铺集合

///

/// 服务器的ServerID

/// 得到服务器对应的店铺数组

public MServerShopCollection GetMServerShop(int _ServerID)

{

DataProvider dp = SqlTools.HelpWWW.DataProviderUse;

using (IDbConnection conn = dp.GetConnection())

{

Common.DataAccess.ORMapping.IConvert ic = dp.GetIConvert();

Common.DataAccess.ORMapping.Mapping m = ic.GetNewMapping();

m.AddSql("select ServerShops from ES_Server where ");

m.AddSql(" ServerID=");

m.AddSql("ServerID", _ServerID);

string XMLstr = m.ExecuteScalar(conn).ToString();

return Common.Utilities.SerializationHelper.FromXML(XMLstr);

}

}

#endregion

做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。

责任编辑:admin
相关文章