今天看到传智播客Asp.Net高手之路视频教程,发现里面有空CodeSmith能够批量辅助生成有关数据库的代码,于是自己也写了一下,效果还不错。
1.先来个将数据库中的表批量生成类的代码。
<%-- Name: Author:WLin Description: --%> <%@ CodeTemplate Language="C#" TargetLanguage="c#" LinePragmas="True" ResponseEncoding="utf-8"%> <%@ Assembly Name="SchemaExplorer" %> <%@ Import Namespace="SchemaExplorer" %> <%@ Assembly Name="System.Data"%> <%@ Import Namespace="System.Data" %> <%@ Property Name="NameSpaceName" Type="String" Default="WlModel" Description="命名空间名"%> <%@ Property Name="ClassName" Type="String" Default="WlClass" Description="类名"%> <%@ Property Name="TableName" Type="SchemaExplorer.TableSchema" Description="从SchemaExplorer配置好的数据库表中选取具体的表名" Category="Context"%> using System; namespace <%=NameSpaceName%> { public class <%=ClassName%> { <% foreach(ColumnSchema cs in TableName.Columns){%> private <%=cs.SystemType%> _<%=cs.Name%>; <%}%> <% foreach(ColumnSchema cs in TableName.Columns){%> public <%=cs.SystemType%> <%=cs.Name%> { get{return _<%=cs.Name%>;} set{_<%=cs.Name%>=value;} } <%}%> } }
2.再来个将数据库中的每一行数据装载到表对用的类对象中。
<%-- Name: Author:WLin Description: --%> <%@ CodeTemplate Language="C#" TargetLanguage="c#" LinePragmas="True" ResponseEncoding="utf-8"%> <%@ Assembly Name="SchemaExplorer" %> <%@ Import Namespace="SchemaExplorer" %> <%@ Assembly Name="System.Data"%> <%@ Import Namespace="System.Data" %> <%@ Property Name="NameSpaceName" Type="String" Default="WlDal" Description="命名空间名"%> <%@ Property Name="ClassName" Type="String" Default="WlClass" Description="类名"%> <%@ Property Name="TableName" Type="SchemaExplorer.TableSchema" Description="从SchemaExplorer配置好的数据库表中选取具体的表名" Category="Context"%> <%@ Property Name="AliasNameSpaceName" Type="String" Default="WlModel" Description="另外命名空间名"%> using System; using System.Data; namespace <%=NameSpaceName%> { public class <%=ClassName%> { private void loadEntiryData(<%=AliasNameSpaceName%>.<%=ClassName%> p<%=ClassName%>,DataRow pRow) { <% foreach(ColumnSchema cs in TableName.Columns){%> if(pRow["<%=cs.Name%>"]!=DBNull.Value) { p<%=ClassName%>.<%=cs.Name%> = (<%=cs.SystemType%>)pRow["<%=cs.Name%>"]; } <%}%> } } }