(三层架构)

原创 2016年08月31日 11:28:17

用到的一些知识借博客来保存一下,复习能用的上。 基于C#的三层架构上的一个项目其中的一点代码片段。

Model层

<span style="font-family:Microsoft YaHei;">using System;
using System.Runtime.Serialization;

namespace Model
{
    /// <summary>
    ///属性的访问器包含与获取(读取或计算)或设置(写)属性有关的可执行语句。访问器声明可以包含 get 访问器或 set 访问器,或者两者均包含。
原因:具有很好的收缩性,对GET 和SET 可以单独设置访问权限 比如对某个成员数据只能读取或者只写,或者只有派生类可以访问等。需要通过函数来调用私有成员数据,属性提供了高效的访问模式和简单的书写。 
用法:
类名.属性=“”赋值    set作用 
变量=类名.属性 取值   get 作用
    /// </summary>
    [Serializable]
    [DataContract]
    public class B_Brand
    {
        [DataMember]
        public Guid GUID { get; set; }
        
        [DataMember]
        public string Brand { get; set; }


        [DataMember]
        public int Trace { get; set; }

        [DataMember]
        public int Property { get; set; }
        
        [DataMember]
        public string CreateUser { get; set; }

        [DataMember]
        public DateTime? CreateDate { get; set; }
        
        [DataMember]
        public string ModifyUser { get; set; }

        [DataMember]
        public DateTime? ModifyDate { get; set; }
        
        [DataMember]
        public string VendorID { get; set; }
         [DataMember]
        public string VendorIDS { get; set; }
    }
}</span>
<span style="font-family:Microsoft YaHei;">
</span>
Bll层

<span style="font-family:Microsoft YaHei;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DALFactory;
using IDAL;
using Model;
using System.Data;

namespace BLL
{
    /// <summary>
    /// 业务逻辑类Demo 的摘要说明。
    /// </summary>
    public class B_BrandBLL
    {
        private static readonly IB_Brand dal = DataAccess.CreateObject<IB_Brand>("ServerDAL.B_BrandData");      
        public static B_Brand GetModel(Guid GUID)
        {
            DataSet ds = dal.GetModel(GUID);
            B_Brand demo = null;
            if (ds.Tables[0].Rows.Count > 0)
            {
                demo = new B_Brand();
                
                demo.GUID = string.IsNullOrEmpty(ds.Tables[0].Rows[0]["GUID"].ToString()) ? default(Guid) : (Guid)ds.Tables[0].Rows[0]["GUID"];
                
                demo.Brand = string.IsNullOrEmpty(ds.Tables[0].Rows[0]["Brand"].ToString()) ? default(string) : (string)ds.Tables[0].Rows[0]["Brand"];
                
                demo.Trace = string.IsNullOrEmpty(ds.Tables[0].Rows[0]["Trace"].ToString()) ? default(int) : (int)ds.Tables[0].Rows[0]["Trace"];
                
                demo.Property = string.IsNullOrEmpty(ds.Tables[0].Rows[0]["Property"].ToString()) ? default(int) : (int)ds.Tables[0].Rows[0]["Property"];
                
                demo.CreateUser = string.IsNullOrEmpty(ds.Tables[0].Rows[0]["CreateUser"].ToString()) ? default(string) : (string)ds.Tables[0].Rows[0]["CreateUser"];

                demo.CreateDate = string.IsNullOrEmpty(ds.Tables[0].Rows[0]["CreateDate"].ToString()) ? DateTime.Parse("9999-12-31") : (DateTime)ds.Tables[0].Rows[0]["CreateDate"];
                
                demo.ModifyUser = string.IsNullOrEmpty(ds.Tables[0].Rows[0]["ModifyUser"].ToString()) ? default(string) : (string)ds.Tables[0].Rows[0]["ModifyUser"];

                demo.ModifyDate = string.IsNullOrEmpty(ds.Tables[0].Rows[0]["ModifyDate"].ToString()) ? DateTime.Parse("9999-12-31") : (DateTime)ds.Tables[0].Rows[0]["ModifyDate"];
                
                demo.VendorID = string.IsNullOrEmpty(ds.Tables[0].Rows[0]["VendorID"].ToString()) ? default(string) : (string)ds.Tables[0].Rows[0]["VendorID"];

              
                
            }
            return demo;
        }
}</span>

DAL层

<span style="font-family:Microsoft YaHei;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using IDAL;
using Model;
using System.Data;
using DBUtility;
using System.Data.SqlClient;
using System.Data.Common;

namespace ServerDAL
{
    public partial class B_BrandData : IB_Brand
    {

        #region IB_Brand 成员

        public bool Exists(Guid GUID)
        {
            StringBuilder sb =new StringBuilder("SELECT COUNT(*) FROM B_Brand WHERE  GUID=@p0 ");            
            SqlParameter[] p = new SqlParameter[1];
            
            p[0] = new SqlParameter("@p0", GUID);
            
            return DbHelperSQL.Exists(sb.ToString(),p);
        }

 public DataSet GetList(string where, params object[] args)
        {
            StringBuilder sb = new StringBuilder(@"SELECT B.GUID,B.CreateDate,B.CreateUser,B.ModifyDate,B.ModifyUser,
						B.Trace,B.Brand,B.Property,B.VendorID,(B.VENDORID+'.'+V.VendorName)as VendorIDS
						FROM [dbo].B_Brand B WITH(NOLOCK)
						LEFT JOIN [B_Vendor] V WITH(NOLOCK) ON V.Vendorid = B.VendorID");
            if (!string.IsNullOrEmpty(where))
            {
                sb.Append(" WHERE ");
                sb.Append(where);
            }

            SqlParameter[] p = args.Select((m,i)=>new SqlParameter("@p"+i,m)).ToArray();
            return DbHelperSQL.Query(sb.ToString(), p.ToArray());
        }
}</span>


IDAL层

<span style="font-family:Microsoft YaHei;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Model;
using System.Data;

namespace IDAL
{
    // <summary>
    /// 接口层IDemo 的摘要说明。
    /// </summary>
    public partial interface IB_Brand
    {
        #region  成员方法
        /// <summary>
        /// 是否存在该记录
        /// </summary>
        bool Exists(Guid GUID);
        /// <summary>
        /// 增加一条数据
        /// </summary>
        void Add(B_Brand model);
        /// <summary>
        /// 更新一条数据
        /// </summary>
        void Update(B_Brand model);
        /// <summary>
        /// 删除一条数据
        /// </summary>
        void Delete(Guid GUID);
        /// <summary>
        /// 获得一条数据
        /// </summary>
        DataSet GetModel(Guid GUID);
        /// <summary>
        /// 获得数据列表
        /// </summary>
        /// <param name="where">查询条件</param>
        /// <param name="args">查询参数</param>
        /// <returns>数据列表</returns>
        DataSet GetList(string where, params object[] args);
       
        /// <summary>
        /// 获得前几条数据列表
        /// </summary>
        /// <param name="top">条数</param>
        /// <param name="where">查询条件</param>
        /// <param name="orderby">排序条件</param>
        /// <param name="args">查询参数</param>
        /// <returns>数据列表</returns>
        DataSet GetList(int top, string where,string orderby, params object[] args);     
        /// <summary>
        /// 获得数据列表
        /// </summary>
        /// <param name="pagesize">每页条数</param>
        /// <param name="pageindex">当前页数</param>
        /// <param name="where">查询条件</param>
        /// <param name="orderby">排序条件</param>
        /// <param name="totalcount">总记录数</param>
        /// <param name="args">查询参数</param>
        /// <returns>数据列表</returns>
        DataSet GetList(int pagesize, int pageindex, string where, string orderby,out int totalcount, params object[] args);        
        #endregion  成员方法
    }

}</span>
<span style="font-family:Microsoft YaHei;">
</span>
</pre><span style="font-family:Microsoft YaHei;font-size:14px;"><strong>WCF</strong></span><p></p><p><span style="font-family:Microsoft YaHei;"><span style="color: rgb(52, 52, 52); font-size: 16.2px; white-space: pre-wrap;"></span></span></p><pre name="code" class="csharp"><span style="font-family:Microsoft YaHei;">using BLL;
using Model;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Text;
using System.Xml;

namespace ShellFrame.WCF
{
    public partial class B_BrandWCF
    {
        [OperationContract(Name = "GetListHTML")]
        [WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.WrappedRequest, UriTemplate = "/GetListHTML")]
        public List<B_Brand> GetListHTML(string Brand, string VendorName)
        {
            int  i=0;
            string[] param = new string[2];

            StringBuilder sb = new StringBuilder();
            if (!string.IsNullOrEmpty(Brand))
            {
                param[i] = Brand;
                sb.Append("Brand like '%" + param[i] + "%' ");
            }
           
            if (!string.IsNullOrEmpty(Brand) && !string.IsNullOrEmpty(VendorName))
            {
                sb.Append(" and ");
            }

            if (!string.IsNullOrEmpty(VendorName))
            {
                param[i] = VendorName;
                sb.Append(" VendorName like '%" + param[i] + "%'");
            }
            List<B_Brand> list = B_BrandBLL.GetList(sb.ToString(), param);
            return list;
        }
}</span>

后台完成,还有前端的一些引用。



版权声明:本文为博主原创文章,未经博主允许不得转载。

三层架构下实现用户登陆C#

上篇文章讲到三层。接下来就通过一个实例具体的看怎么用三层实现用户登陆界面。   一、Model实体(LoginModel):          namespace LoginModel { ...
  • u010858791
  • u010858791
  • 2014年06月21日 17:10
  • 2298

三层架构和 MVC 模式的区别与联系

三层架构与MVC模式的区别与联系
  • qq_16603341
  • qq_16603341
  • 2017年04月22日 15:40
  • 652

三层架构—简析

分层的目标是为了“高内聚,低耦合”,分层可将复杂的简单化,当需求需要改变时,你只需要该相应部分而不用大范围的修改。分层还提高了可维护性和可扩展性,但并不是所有的都要分层,业务逻辑简单,没有真正的数据存...
  • zhangzijiejiayou
  • zhangzijiejiayou
  • 2014年07月28日 11:03
  • 2450

三层架构的原理及实现

三层架构 代码的可扩展性和系统的后期维护: 1、三层就很好的为我们解决了这个问题.让我们不必为了业务逻辑上的微小变化而迁至整个程序的修改,只需要修改商业逻辑层中的一个函数或一个过程; 2、增强了...
  • wenyusuran
  • wenyusuran
  • 2014年12月01日 15:29
  • 4076

【ASP.NET开发】.NET三层架构简单解析

这篇文章本来应该很早就写出来的,但是一直苦于自己的精神能力有限,而且已经到了我们学校的考试周,所以时间上还是有点紧迫。关键的一点就是,找不到合理的思路来写,思路没有的话,就算是再好的素材,也写不来大家...
  • yisuowushinian
  • yisuowushinian
  • 2013年01月16日 18:05
  • 13828

用三层架构来做winform程序

三层架构是一种代码分层思想,简单的说就是将一个项目分为界面展示、业务逻辑、数据访问三层,各层之间保持一定的独立性,降低代码之间的耦合性,这样做的好处是显而易见的: 1、各层之间的改动不会影响到其他层(...
  • clb929
  • clb929
  • 2017年01月09日 22:56
  • 5170

三层架构(二)——为什么要用三层架构?

二、为什么要用三层架构?      1、分析       层次结构在现实社会中随处可见。记得有个笑话讲有个村长得意的向他的老婆吹牛:“全中国比我官大的只有四个人,乡长、县长、省长和国务院总理”,这个笑...
  • u010853701
  • u010853701
  • 2014年06月28日 17:18
  • 2112

对于三层架构的认识整理

三层架构并不是MVC,MVC是一个很早就有的经典的程序设计模式,M-V-C分为三层,M(Model)-V(View)-C(Control)。而web开发中的三层架构是指:数据访问层(DAL-Datab...
  • aa2397199142
  • aa2397199142
  • 2016年03月04日 11:19
  • 2192

[原创]java web三层架构程序实例

一、前言前几天我在这里发表过一篇文章是简单介绍java web三层架构的配置方法(包括连接池配置和一个简单测试方法),相信许多看过该文章的同学已经搭建起tomcat+ms sqlserver的jsp编...
  • woolceo
  • woolceo
  • 2005年10月19日 13:41
  • 10552

MVC和三层架构的比较

以前涉及到.NET做项目,脑袋里面只有一个概念,那就是三层,最近学习了一种新的架构思想,那就是ASP.NET MVC+EF+EasyUI,我们的项目已经进行了一半了,对这个架构算是有了初步的认识。  ...
  • zjx86320
  • zjx86320
  • 2014年12月07日 21:09
  • 2041
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:(三层架构)
举报原因:
原因补充:

(最多只允许输入30个字)