Webservice - 泛型或集合 - EnterpriseLibrary

本文介绍了一个简单的公司信息管理系统,包括数据库表定义、模型类、数据访问层实现及WebService接口。通过C#实现公司信息的增删改查功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.数据库

 

USE MASTER
IF OBJECT_ID(N'[dbo].[Company]') IS NOT NULL
 DROP PROCEDURE [dbo].[Company]
GO
CREATE TABLE [dbo].[Company]
(
 [CompanyID] INT NOT NULL PRIMARY KEY,
 [CompanyName] NVARCHAR(200) NOT NULL
)
GO

二.WLZ.Model:

 

using System;
using System.Collections.Generic;
using System.Text;

namespace WLZ.Model
{
    /// <summary>
    /// Serializable 序列化  , 并且必须有 空构造函数
    /// </summary>
    [Serializable]
    public class Company
    {
        public Company()
        {
     
        }
        public Company(int companyID, string companyName)
        {
            this._companyID = companyID;
            this._companyName = companyName;
        }

        private int _companyID ;
        private string _companyName ;

        public int CompanyID
        {
            get { return _companyID; }
            set { _companyID = value; }
        }
        public string CompanyName
        {
            get { return _companyName; }
            set { _companyName = value; }
        }
    }
}


三.WLZ.DataAccess( 添加引用 EnterpriseLibrary 中 Common.dll,Data.dll,ObjectBuilder.dll三个dll文件

    添加引用 模型 WLZ.Model.dll )

 

using System;
using System.Data;
using System.Data.Common;
using System.Web.Services;
using System.Collections;
using System.Collections.Generic;
using System.Xml.Serialization;

using Microsoft.Practices.EnterpriseLibrary.Data;
using WLZ.Model;

namespace WLZ.DataAccess
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class CompanyDAO : WebService
    {
        Database db = null;
        public CompanyDAO()
        {
            db = DatabaseFactory.CreateDatabase();
        }

        [WebMethod(Description = "IList 集合")]
        [XmlInclude(typeof(Company))]
        public IList GetCompanyIList()
        {
            IList result = new ArrayList();
            string selectSqL = "SELECT * FROM [Company]";
            DbCommand command = db.GetSqlStringCommand(selectSqL);
            DataSet ds = db.ExecuteDataSet(command);
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                Company company = new Company();
                company.CompanyID = int.Parse(ds.Tables[0].Rows[i]["CompanyID"].ToString());
                company.CompanyName = ds.Tables[0].Rows[i]["CompanyName"].ToString();
                result.Add(company);
            }
            return result;
        }

        [WebMethod(Description = "为WebService返回泛型集合的方法,需要注意的是WebService只能返回类型而不能返回接口,如果使用IList<T>则会出现无法序列化对象错误.")]
        [XmlInclude(typeof(Company))]
        public List<Company> GetCompanyList()
        {
            List<Company> result = new List<Company>();
            string selectSqL = "SELECT * FROM [Company]";
            DbCommand command = db.GetSqlStringCommand(selectSqL);
            DataSet ds = db.ExecuteDataSet(command);
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                Company company = new Company();
                company.CompanyID = int.Parse(ds.Tables[0].Rows[i]["CompanyID"].ToString());
                company.CompanyName = ds.Tables[0].Rows[i]["CompanyName"].ToString();
                result.Add(company);
            }
            return result;
        }

        [WebMethod(Description = "WebService 提供泛型接口,调用时传的是 Company[] 数组")]
        [XmlInclude(typeof(Company))]
        public void AddCompanyList(List<Company> CompanyList)
        {
            foreach (Company company in CompanyList)
            {
                string commandSQL = @"INSERT INTO [Company]
               (
                  [CompanyID]                                           
               , [CompanyName]                                           
                                                )
              values(
                   @p0
                , @p1
               )";
                DbCommand command = db.GetSqlStringCommand(commandSQL);
                db.AddInParameter(command, "p0", DbType.Int32, company.CompanyID);
                db.AddInParameter(command, "p1", DbType.String, company.CompanyName);
                db.ExecuteNonQuery(command);
            }
        }
    }
}

四.WLZ.Host


添加引用 WLZ.DataAccess.dll 文件

创建 CompanyService.asmx

<%@ WebService Language="C#" Class="WLZ.DataAccess.CompanyDAO" %>

修改 web.config
<?xml version="1.0"?>

<configuration>
  <configSections>
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data"/>
  </configSections>
  <appSettings/>
  <dataConfiguration defaultDatabase="AppDBServer"/>
  <connectionStrings>
    <add name="AppDBServer" connectionString="database=Demo;server=127.0.0.1;uid=sa;pwd=wlz;" providerName="System.Data.SqlClient"/>
  </connectionStrings>

</configuration>

 

五.WLZ.Shell 

 

添加Web引用 (http://localhost:6330/CompanyService.asmx)取名为 CompanyService

 

using WLZ.Shell.CompanyService;

 

CompanyDAO companyDAO = new CompanyDAO();

增加:

private void AddCompanyList(Company[] CompanyList)
{
           companyDAO.AddCompanyList(CompanyList);
}

查询(集合)

 private IList GetCompanyIList()
 {

            IList  result = (IList)companyDAO.GetCompanyIList();
            return result;
}

查询(泛型)

 private Company[]  GetCompanyList()
 {

            Company[] CompanyList  =  companyDAO.GetCompanyList();
            return CompanyList  ;
 }


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值