[置顶]信息发布系统 Jquery+MVC架构开发(4)Model 层

 

下面开始在我们的解决方案里面增加实体.

这一层我个人感觉是跟数据库的映射层次,有了这一层,各层访问数据库会方便很多,不然的话得用DataSet或DataReader的直接访问了。理解为持久化对象就ok了。

在这里我们开始使用动软.Net代码生成器,这个网上很多,想使用的下载就可以了,更好的是CodeSmith 只不过这个工具我们需要自定义模板。用代码生成器是为了我们自己一手写重复的代码,仅此而已。

安装好动软.Net代码生成器后,进入下面的界面:

首先在左边的树菜单新增服务器,如下:

 

选择下一步:

输入相对应的服务器,用户/密码,数据库,选择确定即可。然后在左侧新建好的服务器选择连接:

选择其中的info表:

选择单表代码生成器:

选择model,点击生成代码:

然后把生成的代码放到我们的解决方案里面即可,其他的表也是类似的操作。

注意由于很多项目中命名规则的问题,我们可能需要自定义模板,动软的代码生成器现在增加了模板,大伙可以研究下:

选择右边的模板管理下的代码模板(选择一个双击):

改动模扳生成的代码如下:

说到这里就得介绍下大名鼎鼎的CodeSmith 了,这框代码生成工具需要我们自己编写模板,然后根据我们自己的模板生成自己需要的代码:

这样的话灵活性很高,问题是我们需要学习下模板的编写,呵呵,好消息是模板同样是c#语言编写。

基本的实体类定义好以后,我们为了结果类,如下:

  public class InfoResult

    {

        public int Code = 0;

        public string Message = string.Empty;

}

这样我们就可以把自己定义好的业务操作信息和异常信息放到这个类中了,正常情况下,我们可以定义code=0 ,如果出现异常,我们可以把code定义为100,Message为:

InfoResult  result=new InfoResult  ()

result.Message = ex.Message + ex.StackTrace + ex.InnerException;

同时为了支持分页我们需要自己定义一个分页类:

    public class PageInfo

    {

        public int startNum { get; set; }

        public int endNum { get; set; }

        public int Max { get; set; }

        public int pageSize { get; set; }

        public int pageIndex { get; set; }

    }

 

为了得到查询列表我们需要类的组合:

比如:
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace InfoPub.Modal

{

    public class SearchInfo

    {

        /// <summary>

        /// infoname

        /// </summary>           

        public string Infoname

        {

            get;

            set;

        }

        /// <summary>

        /// TypeId

        /// </summary>           

        public int TypeId

        {

            get;

            set;

        }

        /// <summary>

        /// CreateId

        /// </summary>           

        public int CreateId

        {

            get;

            set;

        }

        /// <summary>

        /// BeginDate

        /// </summary>           

        public DateTime BeginDate

        {

            get;

            set;

        }

        /// <summary>

        /// EndDate

        /// </summary>           

        public DateTime EndDate

        {

            get;

            set;

        }

        public PageInfo pageInfo = new PageInfo();

    }

 

    public class InfoList

    {

        public PageInfo pageInfo = new PageInfo();

        public InfoResult infoResult = new InfoResult();

        public List<Info> infoList = new List<Info>();

    }

}

 

原文地址:https://www.cnblogs.com/encounter/p/2188758.html