动软.Net代码生成器教程
- 格式:doc
- 大小:2.11 MB
- 文档页数:21
使⽤.NET命令⾏编译器编译项⽬(如、C#等)源程序最好有.csproj或.vbproj⽂件,没有的话,要花些时间调试下⾯我以做⽰例讲解⼀下:从proj我们可以获取以下有⽤信息Settings⼩节中有很多配置选项,对应⼀些编译器选项<References>⼩节中是项⽬的引⽤,第3⽅类库最好⽤绝对路径<Imports>⼩节中是要导⼊的⼀些命名空间<Files>⼩节中有项⽬的所有⽂件,选取 BuildAction = "Compile"的⽂件⽤vbc测试了⼀下,很容易,注意以下⼏项:rootnamespacereferencetargetimports加上bugreport可以将所有的源⽂件代码和bug报告输出。
不错给你⼀端编译⽰例:vbc /r:System.dll /r:System.Data.dll /r:System.Drawing.dll /r:System.Web.dll /r:System.Xml.dll/r:bin\Microsoft.ApplicationBlocks.Data.dll /r:bin\ExportTechnologies.WebControls.RTE.dll /imports:Microsoft.VisualBasic/imports:System /imports:System.Collections /imports:System.Configuration /imports:System.Data /imports:System.Drawing /imports:System.Web /imports:System.Web.UI /imports:System.Web.UI.HtmlControls /imports:System.Web.UI.WebControls /imports:MMS /rootnamespace:MMS /t:library /out:Truly.MMS.dll /bugreport:bug.log AssemblyInfo.vb Global.asax.vb HDAdd.aspx.vb HDticketLogAdd.aspx.vb MIS.vb PageBase.vb Utils.vb如果没有proj⽂件,那么可以⽤下⾯的命令获取:dir /b *.vb > filelist.txtcsc的使⽤⽅法就靠你⾃⼰去琢磨了。
1引言目前大多数项目或产品都使用关系型数据库实现业务数据的存储,这样在开发过程中,常常有一些业务逻辑需要直接用写SQL语句实现,但这样开发的结果是:遍地布满SQL语句。
这些藕合较高的SQL语句给系统的改造和升级带来很多无法预计的障碍。
也许说可以使用服务端数据库存储子程序实现,这样只是将这种耦合搬迁到后端,问题依然没有根本解决,服务端驻留过多的存储子程序也消耗着服务器的性能并给多人合作维护和更新部署带来许多障碍。
为了提高项目的灵活性,特别是快速开发,ORM是一个不错的选择。
举个简单的例子:在使用ORM 的系统中,当数据库模型改变时,不再需要理会逻辑代码和SQL语句中涉及到该模型的所有改动,只需要将该模型映射的对象稍作改动,甚至不做改动就可以满足要求。
ORM的全称是Object Relational Mapping,即对象关系映射。
它的实质就是将关系数据(库)中的业务数据用对象的形式表示出来,并通过面向对象(Object-Oriented)的方式将这些对象组织起来,实现系统业务逻辑的过程。
在ORM过程中最重要的概念是映射(Mapping),通过这种映射可以使业务对象与数据库分离。
从面向对象来说,数据库不应该和业务逻辑绑定到一起,ORM则起到这样的分离作用,使数据库层透明,开发人员真正的面向对象。
下图简单说明了ORM在多层系统架构中的这个作用。
图1ORM在多层系统架构中的作用诚然ORM并非是万能的,面对纷繁复杂的业务逻辑,当遇到特别复杂的数据处理及海量数据运算或弥补设计的不足时还应归结到SQL或存储过程来实现才是好的选择,但它却很好地体现了“80/20(或90/10)法则”(也被称为“帕累托法则”),也就是说:花比较少(10%-20%)的力气就可以解决大部分(80%-90%)的问题,这样通过利用ORM框架,我们就仅需要付出极少数时间和精力来解决剩下的少部分问题了,这无疑缩短了整个项目开发的周期,因此快速开发、面向对象和性能优化等必须灵活兼顾才好。
⾃定义动软代码模版编写这⾥使⽤的是动软的模板.这是动软代码⽣成器的⼀个整体界⾯。
下⾯做的⽰例是从右边模板管理中的选⼀个模板进⾏修改,这⾥我选了简单三层模板中的DAL.cmt模板1 2 3 4 5 6 7 8 9 10 11<#@ template language="c#"HostSpecific="True"#><#@ output extension= ".cs"#><# TableHost host = (TableHost)(Host);string DbParaHead=host.DbParaHead;string DbParaDbType=host.DbParaDbType;string preParameter=host.preParameter;string ModelSpace = Space+".Model."+ host.GetModelClass(host.TableName); ColumnInfo identityKey=host.IdentityKey;string returnValue = "void";if(identityKey!=null) {returnValue = CodeCommon.DbTypeToCS(identityKey.TypeName); }#>在模板上右键,编辑查看。
就能看到上⾯的代码,这是模板中⾃定义的⼀些变量。
1 2 3 4 5 6 7 8 9 10using System;using System.Text;using System.Data.SqlClient;using System.Collections.Generic;using System.Data;using DBUtility;namespace DAL <# if( host.Folder.Length > 0){ #> .<#= host.Folder #><# } #>{ <# if( host.TableDescription.Length > 0) {#> //<#= host.TableDescription #> <# } #> public partial class<#= host.GetDALClass(host.TableName) #>DAO {}上⾯的代码也是模板中我们⾮常熟悉的引⽤,接下来我来说下我今天要修改的内容。
.net 源码反编译一、概述.NET源码反编译是一种将已编译的.NET程序集(如DLL或EXE文件)转换回可读的源代码的过程。
反编译可以提供对原有代码的深入了解,有助于开发人员理解代码的工作原理,以及进行代码优化、故障排查和文档编写。
二、反编译工具1. .NET Reflector:一款流行的.NET反编译工具,用于反编译.NET Framework项目的源代码。
2. ILSpy:简单易用的免费反编译工具,支持多种.NET框架版本。
3. dotPeek:一款由JetBrains开发的反编译工具,适用于Windows平台上的.NET Core、.NET 3.5及更高版本。
三、反编译步骤1. 下载和安装反编译工具。
2. 打开工具并加载需要反编译的.NET程序集。
3. 反编译过程可能需要一些时间,具体取决于程序集的大小和计算机性能。
4. 完成反编译后,可以在工具中查看源代码。
5. 导出源代码(可选):大多数反编译工具提供导出功能,可以将源代码保存为文本文件。
四、注意事项1. 版权和许可:在反编译受知识产权保护的代码时,需要遵守相关法律法规和许可协议。
2. 还原度:反编译得到的源代码可能不完整,语法结构可能被打乱,难以直接阅读和理解。
3. 尊重原作者:反编译行为应该尊重原作者的权益和知识产权,不应该用于非法的、商业的目的。
4. 安全:在反编译过程中,需要注意避免病毒或恶意软件的感染。
5. 配置:确保您的计算机已安装.NET Framework SDK,以便在反编译工具中正确使用.NET Framework语法和语义。
五、实践案例假设我们有一份已编译的.NET Framework DLL文件,其中包含一个简单的Windows窗体应用程序的代码。
以下是使用.NET Reflector 进行反编译的步骤:1. 下载并安装.NET Reflector。
2. 打开.NET Reflector,选择“文件”->“打开”并加载需要反编译的DLL文件。
动软代码生成器1. 简介动软代码生成器是一款强大的代码生成工具,可以帮助开发人员快速生成各种代码,提高开发效率,减少重复工作。
它提供了丰富的模板和自定义选项,可用于生成数据库脚本、实体类、数据访问层、业务逻辑层等代码。
2. 安装和配置动软代码生成器可以通过以下步骤进行安装和配置:2.1 下载和安装你可以在动软官网下载最新版本的代码生成器安装包。
安装过程非常简单,只需双击安装包并按照提示进行操作即可完成安装。
2.2 配置数据库连接在安装完成后,你需要配置数据库连接信息,以便代码生成器能够连接到你的数据库。
打开代码生成器,并在主界面上找到数据库配置选项。
在这里,你需要填写数据库类型、主机名、端口号、数据库名称、用户名和密码等信息。
2.3 配置代码生成选项代码生成器提供了丰富的模板和自定义选项,可以根据你的需求生成不同类型的代码。
你可以在主界面上找到代码生成选项,其中包括生成代码类型、代码输出路径、命名空间、类名等选项。
根据需求进行相应的配置。
3. 使用方法使用动软代码生成器非常简单,只需按照以下步骤进行操作:3.1 连接数据库在主界面上点击“连接数据库”按钮,输入数据库连接信息,并点击“连接”按钮进行测试连接。
如果连接成功,你将看到一个提示框,说明数据库连接成功。
3.2 选择模板在主界面上选择你要生成的代码类型,比如数据库脚本、实体类、数据访问层、业务逻辑层等。
点击相应的模板,代码生成器将自动根据模板生成相应的代码。
3.3 配置生成选项根据需求进行生成选项的配置。
你可以选择代码输出路径,命名空间,类名等。
点击“生成”按钮,代码生成器将根据你的配置生成相应的代码。
3.4 查看生成结果生成完成后,你可以在代码生成器界面上找到生成的代码文件。
你可以在代码编辑器中查看和编辑生成的代码文件。
4. 总结动软代码生成器是一款强大的代码生成工具,能够帮助开发人员快速生成各种类型的代码。
它提供了丰富的模板和自定义选项,可以根据需求生成不同类型的代码。
推荐⼏个代码⾃动⽣成器,神器
2.0 WebFirst .NET Core代码⽣成器
全新的.NET Core开源代码⽣成器,⽀持模版管理,NET⽤户最佳选择
WebFirst 是果糖⼤数据团队开发的新⼀代⾼性能代码⽣成器&数据库设计⼯具,由.net core 3.1 + sqlsugar 开发导⼊1000个表只要1-2秒,⽤法简单,功能强⼤,⽀持多种数据库,具体功能如下:
⼀、建库、CodeFirst⽅式在线建表,没⽤到CodeFirst的⽤户可以⽤⼯具轻松体验,⽀持公共字段
⼆、导出EXCEL⽂档,把每个表的数据导出来
三、模版管理可以⾃个添加修改模版,使⽤的是Razor模版引擎对C#程序员更加友好
四、⽅案管理,可以创建⾃已的⽣成⽅案,修改⽅案
五、⽀持扩展模版属性,⽀持⽣成更加丰富的前端代码
六、⽀持⽣成解决⽅案
七、⽀持⽣成附加⽂件,⽀持⽂件后缀
⼋、⽀持视图
九、⽀持⾃定义数据类型
⼗、⽀持多种数据库 MYSQL PGSQL SQLITE SQLSERVE ORCLE 达梦
2.1懒猴⼦CG
懒猴⼦CG⽀持在线搭建dubbo、springboot、springcloud等框架,⽀持在线⽣成swagger实体类等,⽀持⾃定义模版,⽀持多种语⾔的代码⽣成。
这款⽣成器是国⼈研发的,站长迭代速度快,社区活跃,⽂档齐全。
是⼀款及其灵活的⽣成器!推荐使⽤!
QQ技术交流群:877957236
版权形式:免费
2.2IT猿⽹
在线代码⽣成器,好处就是⽅便。
重点是连验证码都能在线调试好⽣成java代码直接使⽤。
版权形式:免费。
自动生成C#代码功能介绍一键自动生成各种C#代码,可以节省大量的时间来做业务逻辑的代码,那些重复的代码就交给它去做吧,1分钟生成一个架构所有的基本代码。
有了它开发项目的效率简直轻松多了。
∙可以生成3种不同架构的代码:简单三层结构;基于工厂模式三层架构;自定义结构模版∙可以生成页面Html代码和页面.cs处理代码∙支持父子表的(事务)的代码生成∙可以自定义选择生成的字段∙可以自由设定命名空间和实体类名∙自动生成方法属性注释∙支持对表和视图的代码生成∙支持对多种类型数据库生成代码:如SQLServer2000/2005,Oracle,OleDb等∙可以生成3种不同类型数据层: 基于SQL字符串方式,基于Parameter方式和基于存储过程方式的数据层数据库服务器管理类似SQLServer2005的管理界面,方便平常在代码编辑的时候想查看数据库的信息,并且可以很直观的查看字段类型,长度,主键,默认值等详细信息,省去了在代码和数据库管理器之间的来回切换,方便快捷。
∙可支持SQL Server2000/2005、Oracle、OleDb三种类型的数据库同时管理。
∙可以轻松浏览库,表,视图,存储过程的结构信息.∙可以查看存储过程和视图的定义脚本。
∙表的重命名,删除操作。
查询分析器实现类似SQLServer2005的查询分析器的功能,方便编写代码时想进行数查询。
∙实现执行选中部分SQL语句。
∙实现关键字高亮。
∙支持F5快捷键执行语句。
∙实现打开现有脚本,保存当前脚本功能。
∙实现错误检测提示功能。
自动生成存储过程和SQL脚本∙可以自动生成表的创建脚本。
∙可以自动生成表数据的插入脚本。
∙可以自动生成增、删、改、查等操作的存储过程脚本。
∙可以根据选定的数据库和表,进行多选批量生成。
∙支持在当前生成和导出脚本文件功能。
自动生成数据库文档可以根据选定的数据库和表(可批量生成),可以生成字段的详细信息,包括默认值,描述等信息.生成相应的表结构文档,免去手工写文档和操作的麻烦。
动软代码⽣成器教程——懒⼈有福了很多时候项⽬必须是三层架构模式,但是很多繁琐的代码让多数程序员闹⼼……那有没有⼀个省时省⼒的⼯具快速的帮我们搞定三层架构呢?回答是肯定的,很早之前技术⽜⼈李天平就开发出了这么⼀款⼯具,⽬前该⼯具还在不断的更新,更多的功能也出现了。
实在是让那些⽼鸟们省了不少⼒⽓。
废话不多时,看教程。
三.模板代码⽣成1. 在左侧【数据库视图】,选中表,右键菜单【模板代码⽣成】2. 然后,出现单表的代码⽣成器界⾯,我们设置⾃⼰需要更改的信息备注:代码还有⼀些⽣成规则,是在菜单【⼯具】-【选项】-【代码⽣成设置】中进⾏设置。
3. 然后,点击⼯具栏【⽣成代码】或者【⽣成代码】按钮,即可⽣成该类的代码。
⽣成的代码,可以直接复制到项⽬⽂件中,也可以右键保存成CS⽂件。
通过窗体下⾯的Tab按钮可以来回切换设计视图和代码。
4. 设置模板⽬录5. 模板保存四.模板代码批量⽣成1. 选中数据库或者表,然后单击右键菜单【模板代码批量⽣成】2. 出现的窗⼝和新建项⽬基本相似,只是多了⼀个选中架构的选项:3. 选则要⽣成的表,然后点击【导出】。
4. 在⽣成的⽂件夹中,我们可以看到:批量⽣成代码只⽣成业务表的代码,不再有解决⽅案⽂件和项⽬⽂件,以及其它类库等。
我们可以将⽣成的这些⽂件直接拖到现有的解决⽅案中即可五.代码⽣成规则设置打开菜单【⼯具】-【选项】-【代码⽣成设置】这些配置保存后,在⽣成代码的时候将按照这个规则进⾏⽣成。
代码⽣成的规则设置范围还在不断增加中。
另外,不同数据库类型的数据类型各有不同,这⾥提供了字段类型和C#中的类型建⽴映射关系,⽣成代码时将按映射关系来⽣成代码字段属性的类型。
六.模板编写教程模板的⼤体分为5块内容:模板指令声明,代码语句块,表达式块,类功能控制块,⽂本块输出。
下⾯我们分别来介绍⼀下这5块内容的语法和使⽤说明。
1. 模板指令声明块 <#@ #>和页⾯的指令⼀样,它们出现在⽂件头,通过<#@…#>表⽰。
动软代码⽣成器三层⽤于winformDBUtility项⽬中的DbHelperSQL.cs (找⾃⼰对应的数据库类型)修改前20⾏中的数据库连接字符串获取⽅式为://数据库连接字符串(web.config来配置),多数据库可使⽤DbHelperSQLP来实现.// public static string connectionString = PubConstant.ConnectionString;//配置winform的获取⽅法public static string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ToString(); 并在应⽤层添加app.config<?xml version="1.0"?><configuration><configSections></configSections><connectionStrings><add name="ConnectionString" connectionString="Data Source=server;Initial Catalog=Database;User ID=sa;Password=sa" providerName="System.Data.SqlClient"/></connectionStrings><startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup><runtime><legacyUnhandledExceptionPolicy enabled="true"/></runtime></configuration> 还有另⼀说:动软代码⽣成器默认是⽣成 项⽬。
详解.NET中的动态编译 2008年10月13日 13:11 【IT168技术文档】代码的动态编译并执行是一个.NET平台提供给我们的很强大的工具用以灵活扩展(当然 是面对内部开发人员)复杂而无法估算的逻辑,并通过一些额外的代码来扩展我们已有 的应 用程序。
这在很大程度上给我们提供了另外一种扩展的方式(当然这并不能算是严格意义上 的扩展,但至少为我们提供了一种思路)。
动态代码执行可以应用在诸如模板生成,外加逻辑扩展等一些场合。
一个简单的例子,为了 网站那的响应速度,HTML静态页面往往是我们最好的选择,但基于数据驱动的网站往往又很 难用静态页面实现,那么将动态页面生成html的工作或许就是一个很好的应用场合。
另外, 对于一些模板的套用,我们同样可以用它来做。
另外这本身也是插件编写的方式。
最基本的动态编译.Net为我们提供了很强大的支持来实现这一切我们可以去做的基础,主要应用的两个命名空间 是:piler和Microsoft.CSharp或Microsoft.VisualBasic。
另外还需要用到反 射来动态执行你的代码。
动态编译并执行代码的原理其实在于将提供的源代码交予CSharpCodeProvider来执行编译(其实和CSC没什么两样),如果没有任何编译错误,生成的IL 代码会被编译成DLL存放于于内存并加载在某个应用程序域(默认为当前)内并通过反射的方式 来调用其某个方法或者触发某个事件等。
之所以说它是插件编写的一种方式也正是因为与此, 我们可以通过预先定义好的借口来组织和扩展我们的程序并将其交还给主程序去触发。
一个基 本的动态编译并执行代码的步骤包括:· 将要被编译和执行的代码读入并以字符串方式保存· 声明CSharpCodeProvider对象实例· 调用CSharpCodeProvider实例的CompileAssemblyFromSource方法编译· 用反射生成被生成对象的实例(Assembly.CreateInstance)· 调用其方法以下代码片段包含了完整的编译和执行过程://get the code to compilestring strSourceCode = this.txtSource.Text;// 1.Create a new CSharpCodePrivoder instanceCSharpCodeProvider objCSharpCodePrivoder = new CSharpCodeProvider ();// 2.Sets the runtime compiling parameters by crating a new CompilerParameters instanceCompilerParameters objCompilerParameters = new CompilerParameters ();objCompilerParameters.ReferencedAssemblies.Add("System.dll"); objCompilerParameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");objCompilerParameters.GenerateInMemory = true;// pilerResults: Complile the code snippet by calling a methodfrom the providerCompilerResults cr =pileAssemblyFromSource (objCompilerParameters, strSourceCode);if (cr.Errors.HasErrors){string strErrorMsg = cr.Errors.Count.ToString() + " Errors:";for (int x = 0; x < cr.Errors.Count; x++){strErrorMsg = strErrorMsg + "\r\nLine: " +cr.Errors[x].Line.ToString() + " - " +cr.Errors[x].ErrorText;}this.txtResult.Text = strErrorMsg;MessageBox.Show("There were build erros, please modify your code.", "Compiling Error");return;}// 4. Invoke the method by using ReflectionAssembly objAssembly = piledAssembly;object objClass = objAssembly.CreateInstance("Dynamicly.HelloWorld"); if (objClass == null){this.txtResult.Text = "Error: " + "Couldn't load class.";return;}object[] objCodeParms = new object[1];objCodeParms[0] = "Allan.";string strResult = (string)objClass.GetType().InvokeMember("GetTime", BindingFlags.InvokeMethod, null, objClass, objCodeParms);this.txtResult.Text = strResult;需要解释的是,这里我们在传递编译参数时设置了GenerateInMemory为true,这表明生成的DLL 会被加载在内存中(随后被默认引用入当前应用程序域)。
打开动软.NET代码生成器,在右上选择添加SQL Server 2000 服务器
选择数据库类型,我们这里是SQL 2000
填写数据库据连接信息
链接成功数据库后,我们会看见右边栏变成了和我们SQL Server 企业管理器一样的数据库表列表
我们选择我们项目用的Bo_Blog 数据库,选择中间的选项的生成代码项目
然后选择简单三层架构,填写好极为据我方案名称,这里我写的是MyBlog,选择保存路径,这里我保存在桌面
然后选择数据库 Bo_Blog 然后会在左边列出数据库的所有表
我们把所有表添加到右边框里面来
在这里我们要设置一下,我们在解决方案中各个项目里面的命名空间,这里我把所有的命名空间都设置为MyBlog ,其他选择默认,点击开始生成
这样会自动生成整个三层架构的解决方案
但是这样生成的整个解决方案是不能通过VS 2008 编译通过的,会报很多错误,我们得经行精简和修改
接下来按照我说的做
打开生成的解决方案,删除里面的所有以 .sln .csproj 和 er 结尾的文件和properties里面的AssemblyInfo.cs文件,删除整个Web文件夹,只保留Lib 文件夹里面的mon.dll 文件,DBUtility文件夹里面的DbHelperSQL.cs文件,我们另外在原文件夹中新建解决方案,然后自己把Model BLL DAL DBUtility Lib 类库项目按照下面方法附加到我们新建的解决方案中
添加方式见下面步骤
我们新建解决方案Bo_Blog 在桌面上
注意在VS 创建项目的时候,选择.NET FrameWork 2.0 的这里我们,路径选择在桌面
创建新的解决方案后,我们在解决方案中新建BLL , DAL , DBUtility ,Lib,Model 五个类库项目,建立一个 Web应用程序项目
然后我们分别把原来我们生成和整理后的BLL DAL Model Lib DBUtility 下的文件对应的拷贝到我们新建解决方案的相对应的文件夹下面
拷贝完成后,我们在现在的解决方案中,选中一个项目
,然后选中解决方案属性上面的显示所有文件按钮
,这样就会在下面出现我们赋值过来的文件,用虚线表示的
,然后我们按住Ctrl全部选中他们,鼠标右键选择“包括到项目中”
,就这样,我们就吧他们附加到这个类库项目中了
就这样,我们把其他文件都附加到DAL,Lib,Model,DBUtility 项目中去。
接下来我们得将解决方案中的几个项目关联起来,分别添加好各自间的引用我们选择引用项目,在BLL中,我们要引用DAL和Model两个项目
Ctrl+鼠标左键选中DAL和Model,点击确定。
然后我们还要在BLL中引用一个Lib项目中的DLL文件,同样的方式,添加引用->浏览->找到Lib项目,选择里面的mon.dll 文件,点击确定
同样的方法,我们将在DAL项目中引用DBUtility ,Model两个项目
然后我们要补充的就是,在DBUtility 项目中添加引用System.configuration 这个系统类,方式是添加引用->.NET->找到System.configuration,然确定
然后我们在WEB 项目中打开配置文件Web.config 文件,在<configuration> 后面添加
复制内容到剪贴板
代码:
<appSettings>
<add key="WebDAL" value="MyBlog.SQLServerDAL"/>
<add key="WebConnectionString" value="server=localhost;Initial Catalog=Bo_Blog;uid=sa;pwd=***"/>
</appSettings>
这样一段数据库链接配置
然后找到DBUtility 项目下的DbHelperSQL.cs 文件,用
复制内容到剪贴板
代码:
ConfigurationManager.AppSettings["WebConnectionString"];
字符串代替
复制内容到剪贴板
代码:
PubConstant.ConnectionString
当然,你也可以不在Web.Config 文件里面写连接字符串,直接写在这里就是了。
附件
2.jpg(17.26 KB)
2008-10-9 22:14
哎,好难得写哦
真辛苦,还没写完,就这里算了
如果有人要用的话,有问题不清楚可以跟帖
用代码生成器能生成很大部分使用的代码,为你建立一个完美的开发基础。
它还能自动生成数据库常用方法的存储过程
为你节省代码时间,虽然建立架构的时候有点麻烦
当然还有其他的代码生成器,也比这个好,大家也可以试试
先闪了。