CodeSmith 创建Ado.Net自定义模版(四)

本文详细介绍使用CodeSmith工具创建Ado.Net自定义模版的过程,重点介绍业务逻辑层(BLL)模版的编写方法,并提供了完整的代码示例。

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

 

 

 

CodeSmith 创建Ado.Net自定义模版(四)

 

接上一篇:    CodeSmith 创建Ado.Net自定义模版(三)

 

 

编写业务逻辑层的模版:Step4_BLL.cst

<%@ CodeTemplate Language="C#" TargetLanguage="C#" ResponseEncoding="UTF-8" Description="实体类" %>
<%@ Property Name="NameSpace" Type="System.String" Default="Service" Category="Property" Description="命名空间" %>
<%@ Property Name="ModelNameSpace" Type="System.String" Default="Model" Category="String" Description="实体层的命名空间" %>
<%@ Property Name="DALNameSpace" Type="System.String" Default="Service" Category="String" Description="数据访问层的命名空间" %>
<%@ Property Name="Author" Type="System.String" Default="Wilson" Category="Property" Description="作者名" %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Optional="True" Category="db" Description="表映射文件" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Assembly Name="System.Data" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Import Namespace="System.Data" %>


<script runat="template">
///<summary>
///把数据库类型转化为C#类型
///</summary>
public string DataType2CSharpType(System.Data.DbType dbType)
    {
        switch (dbType)
        {
            case DbType.AnsiString:
                return "string";
            case DbType.AnsiStringFixedLength:
                return "string";
            case DbType.Binary:
                return "byte[]";
            case DbType.Boolean:
                return "bool";
            case DbType.Byte:
                return "byte";
            case DbType.Currency:
                return "decimal";
            case DbType.Date:
                return "DateTime";
            case DbType.DateTime:
                return "DateTime";
            case DbType.DateTime2:
                return "DateTime";
            case DbType.DateTimeOffset:
                return "DateTime";
            case DbType.Decimal:
                return "decimal";
            case DbType.Double:
                return "double";
            case DbType.Guid:
                return "Guid";
            case DbType.Int16:
                return "short";
            case DbType.Int32:
                return "int";
            case DbType.Int64:
                return "long";
            case DbType.Object:
                return "object";
            case DbType.SByte:
                return "sbyte";
            case DbType.Single:
                return "float";
            case DbType.String:
                return "string";
            case DbType.StringFixedLength:
                return "string";
            case DbType.Time:
                return "DateTime";               
            case DbType.UInt16:
                return "ushort";
            case DbType.UInt32:
                return "uint";
            case DbType.UInt64:
                return "ulong";
            case DbType.VarNumeric:
                return "decimal";
            case DbType.Xml:
                return "string";
            default:
                return "object";
        }
    }

///<summary>
/// 字符串转化为小写
///</summary>
public string ToLowercase(string str)
{
str = str.ToLower();
return str;
}

///<summary>
/// 泛型
///</summary>
public string ToGeneric(string str)
{
str = "<" + str + ">";
return str;
}
</script>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using <%=DALNameSpace%>;
using <%=ModelNameSpace%>;

namespace <%=NameSpace%>
{
///<summary>
///<%=SourceTable.Name%>业务逻辑
/// 创建人:<%=Author%>
/// 创建时间:<%=DateTime.Now.ToShortDateString() %>
///</summary>
public class <%=SourceTable.Name%>Manager
{

<% if(SourceTable.HasPrimaryKey) %>
<%{%>
#region##通过主键ID得到<%=SourceTable.Name%>
///<summary>
/// 功能:通过ID得到<%=SourceTable.Name%>
/// 创建人: <%=Author%>
/// 创建时间:<%=DateTime.Now.ToShortDateString() %>
///</summary>
///<param name="">主键ID</param>
///<returns></returns>
public <%=SourceTable.Name%> Get<%=SourceTable.Name%>ById(<%=DataType2CSharpType(SourceTable.PrimaryKey.MemberColumns[0].DataType)%> <%=ToLowercase(SourceTable.PrimaryKey.MemberColumns[0].Name)%>)
{
using (<%=SourceTable.Name%>Service ws = new <%=SourceTable.Name%>Service())
{
return ms.Get<%=SourceTable.Name%>ById(<%=ToLowercase(SourceTable.PrimaryKey.MemberColumns[0].Name)%>);
}
}
#endregion

#region##通过主键ID删除<%=SourceTable.Name%>
///<summary>
/// 功能:通过主键ID删除<%=SourceTable.Name%>
/// 创建人: <%=Author%>
/// 创建时间:<%=DateTime.Now.ToShortDateString() %>
///</summary>
///<param name="">主键ID</param>
///<returns></returns>
public int DeleteById(<%=DataType2CSharpType(SourceTable.PrimaryKey.MemberColumns[0].DataType)%> <%=ToLowercase(SourceTable.PrimaryKey.MemberColumns[0].Name)%>)
{
using (<%=SourceTable.Name%>Service ws = new <%=SourceTable.Name%>Service())
{
return ws.DeleteById(<%=ToLowercase(SourceTable.PrimaryKey.MemberColumns[0].Name)%>);
}
}
#endregion
<%}%>

#region##添加<%=SourceTable.Name%>
///<summary>
/// 功能:添加<%=SourceTable.Name%>
/// 创建人: <%=Author%>
/// 创建时间:<%=DateTime.Now.ToShortDateString() %>
///</summary>
///<param name=""></param>
///<returns></returns>
public int Add<%=SourceTable.Name%>(<%=SourceTable.Name%> <%=ToLowercase(SourceTable.Name)%>)
{
using (<%=SourceTable.Name%>Service ws = new <%=SourceTable.Name%>Service())
{
return ws.Add<%=SourceTable.Name%>(<%=ToLowercase(SourceTable.Name)%>);
}
}
#endregion

#region##得到<%=SourceTable.Name%>集合
///<summary>
/// 功能:得到<%=SourceTable.Name%>集合
/// 创建人: <%=Author%>
/// 创建时间:<%=DateTime.Now.ToShortDateString() %>
///</summary>
///<returns></returns>
public IList<%=ToGeneric(SourceTable.Name)%> GetList()
{
using (<%=SourceTable.Name%>Service ws = new <%=SourceTable.Name%>Service())
{
return ws.GetList();
}
}
#endregion

#region##修改<%=SourceTable.Name%>
///<summary>
/// 功能:修改<%=SourceTable.Name%>
/// 创建人: <%=Author%>
/// 创建时间:<%=DateTime.Now.ToShortDateString() %>
///</summary>
///<param name=""></param>
///<returns></returns>
public int Mod<%=SourceTable.Name%>(<%=SourceTable.Name%> <%=ToLowercase(SourceTable.Name)%>)
{
using (<%=SourceTable.Name%>Service ws = new <%=SourceTable.Name%>Service())
{
return ws.Mod<%=SourceTable.Name%>(<%=ToLowercase(SourceTable.Name)%>);
}
}
#endregion

#region##修改<%=SourceTable.Name%>
///<summary>
/// 修改<%=SourceTable.Name%>
/// 创建人: <%=Author%>
/// 创建时间:<%=DateTime.Now.ToShortDateString() %>
///</summary>
///<param name=""></param>
///<returns></returns>
public int SelectCount()
{
using (<%=SourceTable.Name%>Service ws = new <%=SourceTable.Name%>Service())
{
return ws.SelectCount();
}
}
#endregion
}
}

 

总结:这套模版分四步,这样就完成了一个三层建构的网站的大体部分,其它部分可以自行扩充,比如CodeSmith直接生成文件夹目录及文件夹到本地,或是中间要加入接口层等。

 

 

要写创建文件夹,及文件,就是一个IO操作,我这里就不写了。。

 

如果有要扩展的在头部引用

<%@ Import Namespace="System.IO" %>

 

把方法写在<script runat="template">标签中

 

比如:写一个方法

public CreatDir()

{

System.IO.DirectoryInfo di = new DirectoryInfo(OutputDirectory);

di.CreateSubdirectory("Domain");

....

}

 

 

 

相关篇张:

 

CodeSmith 创建Ado.Net自定义模版(一)

 

CodeSmith 创建Ado.Net自定义模版(二)

 

CodeSmith 创建Ado.Net自定义模版(三

 

源码下载:http://download.csdn.net/source/3535328

源码下载二:http://files.cnblogs.com/zhongweiv/AdoTemp.rar

 





转载于:https://www.cnblogs.com/zhongweiv/archive/2011/11/01/CodeSimth_4.html

内容概要:本文详细介绍了FLAC3D6.0软件中关于巷道开挖、支护与充填开采的三组源代码及其应用场景。首先,针对巷道开挖部分,通过设定合理的边界条件和采用适当的命令如zone relax excavate来模拟开挖后地压对巷道稳定性的动态影响。其次,在巷道锚杆支护方面,强调了锚杆与围岩之间的耦合关系以及相关参数的精确设置,确保支护的有效性和可靠性。最后,对于工作面充填开采,则重点探讨了充填体的存在与否对上覆岩层应力场、位移场和破坏场的具体影响,并提供了具体的代码实现方法。此外,还分享了一些实用的小技巧,比如利用save [filename]和restore命令进行参数敏感性分析,提高了计算效率。 适合人群:从事岩土工程领域的研究人员和技术人员,尤其是那些希望深入了解FLAC3D6.0软件在巷道开挖、支护与充填开采方面的应用的人士。 使用场景及目标:适用于需要进行巷道开挖、支护与充填开采数值模拟的研究项目。主要目的是帮助用户掌握FLAC3D6.0的相关命令和参数配置,以便更好地理解和预测实际工程中的地质力学行为。 其他说明:文中提供的代码均带有详细的汉语注释,便于初学者学习和理解。同时,作者提醒使用者要注意一些常见的陷阱,如边界条件的选择、锚杆耦合等问题,以避免计算过程中出现不必要的错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值