http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 5852|回复: 3

[Asp.Net] Codesmith模板生成Model层和DAL层

[复制链接]
发表于 2013-7-26 19:33:58 | 显示全部楼层 |阅读模式
本帖最后由 1602264241 于 2013-7-26 20:23 编辑

为了节省开发周期我们利用CodeSmith代码生成器,实现将数据库中的表自动生成C#的实体类和数据访问层。
其中数据表中的外键将自动生成外键属性,数据库表外键字段定义为xxxId即可。
例如我想把下面的Order表生成实体类(Order)和数据访问层(OrderService),表结构如下所示。

Order表定义

Order表定义

最终生成Model层如下:
  1. using System;
  2. namespace Mybookshop.Models{
  3.     /// <summary>
  4.     /// (Order)实体类
  5.     /// </summary>
  6.     public class Order
  7.     {
  8.         /// <summary>
  9.         /// (Order)实体类
  10.         /// </summary>
  11.         public Order()
  12.         {
  13.                     _User=new User();
  14.         }
  15.       
  16.         #region 字段
  17.                 private int _Id;
  18.                 private System.DateTime _OrderDate;
  19.                 private User _User;
  20.                 private decimal _TotalPrice;
  21.         #endregion 字段
  22.         #region 属性
  23.                   /// <summary>
  24.                 ///
  25.                 /// </summary>
  26.                 public int Id
  27.                 {
  28.                     set { _Id = value; }
  29.                     get { return _Id; }
  30.                 }            
  31.       
  32.                   /// <summary>
  33.                 ///
  34.                 /// </summary>
  35.                 public System.DateTime OrderDate
  36.                 {
  37.                     set { _OrderDate = value; }
  38.                     get { return _OrderDate; }
  39.                 }            
  40.       
  41.                 public User User
  42.                 {
  43.                     set { _User = value; }
  44.                     get { return _User; }
  45.                 }
  46.       
  47.                   /// <summary>
  48.                 ///
  49.                 /// </summary>
  50.                 public decimal TotalPrice
  51.                 {
  52.                     set { _TotalPrice = value; }
  53.                     get { return _TotalPrice; }
  54.                 }            
  55.       
  56.         #endregion 属性
  57.     }
  58. }
复制代码
DAL层如下:
  1. using System.Configuration;
  2. using System.Web;
  3. using System.Web.Security;
  4. using System.Web.UI;
  5. using System.Web.UI.WebControls;
  6. using System.Web.UI.WebControls.WebParts;
  7. using System.Web.UI.HtmlControls;
  8. using System.Collections.Generic;
  9. using System.Data;
  10. using System.Data.Sql;
  11. using System.Data.SqlClient;
  12. using Mybookshop.Models;

  13. namespace Mybookshop.DAL
  14. {
  15.     /// <summary>
  16.     /// SysFunService 类
  17.     /// </summary>
  18.     public class OrderService
  19.     {               
  20.         #region 查询
  21.                      public static Order GetOrderById(int id)
  22.                     {
  23.                         string sql = "SELECT * FROM Order WHERE Id = @id";
  24.                         SqlParameter p=new SqlParameter("@id",id);
  25.                         DataTable dt=DBHelper.GetDataSet(sql,p);
  26.                         IList<Order> list=GetList(dt);
  27.                         if(list.Count>0) return list[0];
  28.                         return null;
  29.                     }
  30.         
  31.         #endregion
  32.         
  33.         #region 修改
  34.         
  35.                 public static int ModifyOrder(Order model){
  36.                     string sql="UPDATE Orders SET OrderDate=@orderDate,UserId=@userId,TotalPrice=@totalPrice WHERE Id=@id";
  37.                     SqlParameter[] para = new SqlParameter[]
  38.                                 {
  39.                                             new SqlParameter("@id", model.Id),                           
  40.                                             new SqlParameter("@orderDate", model.OrderDate),                           
  41.                                             new SqlParameter("@totalPrice", model.TotalPrice),                           
  42.                                             new SqlParameter("@userId ", model.User.Id),
  43.                                 };
  44.                     return DBHelper.ExecuteCommand(sql, para);
  45.                 }
  46.         #endregion
  47.         
  48.         #region 删除
  49.                 public static int DeleteOrder(Order model){
  50.                     string sql="DELETE Orders WHERE Id=@id";
  51.                     SqlParameter[] para = new SqlParameter[]
  52.                                 {
  53.                                     new SqlParameter("@id", model.Id)                          
  54.                                 };
  55.                     return DBHelper.ExecuteCommand(sql, para);
  56.                 }
  57.         #endregion
  58.         
  59.         #region 新增
  60.                 public static Order AddOrder(Order model){
  61.                     string sql="INSERT INTO  Orders (OrderDate,UserId,TotalPrice) VALUES (@orderDate,@userId,@totalPrice)";
  62.                     SqlParameter[] para = new SqlParameter[]
  63.                                 {
  64.                                                 new SqlParameter("@orderDate", model.OrderDate),                           
  65.                                                 new SqlParameter("@totalPrice", model.TotalPrice),                           
  66.                                 new SqlParameter("@userId ", model.User.Id),
  67.                                 };
  68.                     int newId = DBHelper.GetScalar(sql, para);
  69.                     return GetOrderById(newId);
  70.                 }
  71.         #endregion
  72.         
  73.         #region 将DataTable转换成Order集合
  74.          private static IList<Order> GetList(DataTable dt)
  75.         {
  76.             IList<Order> list = new List<Order>();
  77.             foreach (DataRow row in dt.Rows)
  78.             {
  79.                 Order model = new Order();
  80.                     if (dt.Columns.Contains("Id"))
  81.                         model.Id= (int)row["Id"];
  82.                     if (dt.Columns.Contains("OrderDate"))
  83.                         model.OrderDate= (System.DateTime)row["OrderDate"];
  84.                     if (dt.Columns.Contains("TotalPrice"))
  85.                         model.TotalPrice= (decimal)row["TotalPrice"];
  86.                     if (dt.Columns.Contains("UserId"))  //外键处理
  87.                         model.User = UserService.GetUserById((int)row["UserId"]);
  88.               
  89.                 list.Add(model);
  90.             }
  91.             return list;
  92.         }
  93.         #endregion
  94.       
  95.     }
  96. }
复制代码
以上rar中包含5个文件:
DAL.cst:生成DAL层的模板
Models.cst:生成Model层的模板
StringProcess.cst:在模板中定义字符串处理类,供模板中的方法调用。
DBHelper.cs:DAL层调用的数据库通用方法
download.txt:包含CodeSmith下载地址

下载地址: MyTemplates.rar (4.59 KB, 下载次数: 268)


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-10-29 11:18:35 | 显示全部楼层
居然木有人顶,这个软件确实是一款不错的软件
发表于 2015-1-24 19:21:33 | 显示全部楼层
我要下载
回复

使用道具 举报

发表于 2015-1-24 19:25:22 | 显示全部楼层
强烈支持楼主ing……
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-19 06:41

© 2014-2021

快速回复 返回顶部 返回列表