可以针对任意数据库,根据模板生成代码,支持插件(个人认为比较好玩的插件方式)。
- 1 <%TempletName%>=TEntity
- 2 <%FolderName%>=
- 3 <%FileName%>=<%ns%>.<%FixTblName%>.cs
- 4 <%Foreach%>=true
- 5 <%IgnoreColumns%>=ID
- 6 <%TMacro%>:<%FixTblName%>=CodeGenHelper.Test1(<%tn%>)
- 7 <%CMacro%>:<%FixColName%>=CodeGenHelper.Test1(<%cn%>)
- 8 <%Begin%>
- 9
- 10 using System;
- 11 using System.Collections.Generic;
- 12 using System.Text;
- 13 using System.Data;
- 14 using Fx.Common.Data;
- 15 using Fx.Common.DataAccess;
- 16 using Fx.Common.Rule;
- 17 using Fx.Common.Exceptions;
- 18
- 19 using Cy.Common.Pos.Data;
- 20 using Cy.Common.Pos.DataAccess;
- 21 using Cy.Common.Card;
- 22 using Cy.Common.Ticket;
- 23 using Fx.Common.Context;
- 24 using Fx.Common.Base;
- 25 using Cy.Common.Shift;
- 26
- 27 namespace <%ns%>
- 28 {
- 29 [TableMapping("<%tn%>", CoIdPrefix = "<%tn%>")]
- 30 public partial class T<%FixTblName%> : TEntity
- 31 {
- 32 //---------------------------------------------------------------------
- 33 static T<%FixTblName%>()
- 34 {
- 35 Type type = typeof(T<%FixTblName%>);
- 36 TEntity.RegisterClass(type);
- 37 }
- 38 //---------------------------------------------------------------------
- 39 public T<%FixTblName%>()
- 40 {
- 41 }
- 42 //---------------------------------------------------------------------
- 43 public T<%FixTblName%>(TContext ctx):base(ctx)
- 44 {
- 45 }
- 46 //---------------------------------------------------------
- 47 public override TDataAccess CreateDataAccess()
- 48 {
- 49 return new T<%FixTblName%>Access ();
- 50 }
- 51 //---------------------------------------------------------
- 52 public new T<%FixTblName%>Access DataAccess
- 53 {
- 54 get { return base.DataAccess as T<%FixTblName%>Access;}
- 55 }
- 56 //---------------------------------------------------------------
- 57 public override void Save()
- 58 {
- 59 if(IsDirty)
- 60 base.Save();
- 61 }
- 62 //---------------------------------------------------------------
- 63 #region Properties
- 64 <%cr%>
- 65 //---------------------------------------------------------------------
- 66 protected <%clsDT%> m_<%FixColName%>;
- 67 [Mapping("<%cn%>")]
- 68 [Assign]
- 69 [Compare]
- 70 public <%clsDT%> <%FixColName%>
- 71 {
- 72 get { return m_<%FixColName%>; }
- 73 set { m_<%FixColName%> = value; }
- 74 }
- 75 <%ecr%>
- 76 //---------------------------------------------------------------------
- 77 #endregion
- 78 }
- 79 }
复制代码根据上面模板生成的代码如下:
生成这个代码片段的模板是按照目前正在进行的项目的代码风格所定一的,可能有些人会不习惯。
目前可支持ADO.net所支持的所有数据库。选择数据库后,选择需要生成代码的表和模板即可。模板的定义也比较简单、直观,不需要复杂的学习过程,关键是在适当的地方加入表和列的循环标记。标记的语法请参考帮助文件。
在Demo的rar包里有模板和生成后的代码,同时Demo里还有实现插件的例子代码。 由于是Demo就不提供生成器源代码了。欢迎大家多提意见,我的目标是实现一个方便、快捷但功能强大的代码生成器。后续会加入工程管理和for循环标记的支持,其他的想法也将慢慢加入其中。
Demo下载:附件:
CodeGenerator.v2.29.rar 文/
陈鹏(偶是坏人)