用C#做一个实体类生成器

问题描述

老师要我们效仿.Net代码生成器,做一个功能差不多的。我现在求那位大哥教我做怎么样生成实体类就够了。万分感谢!!

解决方案

解决方案二:
帮顶,有一个代码生成器的原码
解决方案三:
代码生成器首先是为了生成特定的代码的,不是所有的操作都能完成的,所以呢一般都是先有一个基础的模板,然后生成的时候根据模板来进行一些改动。个人愚见,强忍别笑。呵呵
解决方案四:
使用CodeDOM和Emit吧网上的资料很多的呵呵祝好运!
解决方案五:
StreamcodeFile=File.Open(txt_TableCSName.Text.Trim()+".cs",FileMode.Create);StreamWritersw=newStreamWriter(codeFile);CSharpCodeProvidercscp=newCSharpCodeProvider();ICodeGeneratorcodeGenerator=cscp.CreateGenerator(sw);CodeGeneratorOptionscop=newCodeGeneratorOptions();CodeSnippetCompileUnitcscu=newCodeSnippetCompileUnit("usingSystem;nusingSystem.Data;nusingSystem.Collections;");codeGenerator.GenerateCodeFromCompileUnit(cscu,sw,cop);CodeNamespacecnsCodeDom=newCodeNamespace(txt_TableNSName.Text.Trim());CodeTypeDeclarationclsDecl=newCodeTypeDeclaration();clsDecl.Name=txt_TableCSName.Text.Trim();clsDecl.IsClass=true;clsDecl.TypeAttributes=TypeAttributes.Public;cnsCodeDom.Types.Add(clsDecl);CodeConstructorclsConstructor=newCodeConstructor();clsConstructor.Attributes=MemberAttributes.Public;clsDecl.Members.Add(clsConstructor);for(inti=0;i<checkedListBox1.CheckedItems.Count;i++){stringstrKey=checkedListBox1.CheckedItems[i].ToString();CodeMemberFieldclsMember=newCodeMemberField();clsMember.Name="p"+strKey;clsMember.Attributes=MemberAttributes.Private;clsMember.Type=newCodeTypeReference(ht[strKey].ToString());clsDecl.Members.Add(clsMember);CodeMemberPropertyproperty=newCodeMemberProperty();property.Name=strKey;property.Type=newCodeTypeReference(ht[strKey].ToString());property.Attributes=MemberAttributes.Public;property.GetStatements.Add(newCodeMethodReturnStatement(newCodeFieldReferenceExpression(newCodeThisReferenceExpression(),"p"+strKey)));property.SetStatements.Add(newCodeAssignStatement(newCodeFieldReferenceExpression(newCodeThisReferenceExpression(),"p"+strKey),newCodePropertySetValueReferenceExpression()));clsDecl.Members.Add(property);}codeGenerator.GenerateCodeFromNamespace(cnsCodeDom,sw,cop);sw.Close();codeFile.Close();太长了,贴一段把,03的代码
解决方案六:
代码生成器,好象很麻烦,看一下,帮顶.
解决方案七:
只是实体类的很简单,根据数据库系统表,找到要生成实体类的数据表中的字段,类型,然后拼出来就行了
解决方案八:
6楼的大哥麻烦你所详细点可以不?
解决方案九:
一般的实体类就是对应一个数据表的字段。可以利用sqlserver的系统表来查询你要生成表的字段信息比如:selecta.nameascolumnname,casewhenb.name='char'then'string'whenb.name='varchar'then'string'whenb.name='int'then'int'whenb.name='datetime'then'DateTime'whenb.name='smalldatetime'then'DateTime'whenb.name='decimal'then'decimal'else'error'endasdatatypefromsyscolumnsainnerjoinsystypesbon(a.xtype=b.xtype)wherea.id=object_id('t_new_tmp_jgdm')//换成你自己的表orderbycolorder得到了字段信息后,你就拼字符串贝。按照下面类的形式拼出来,输出到一个txt文本就ok了classA{int_name;publicintName{get{returnthis._name;}set{this._name=value;}}}
解决方案十:
CodSmith可以有nHibernate实体类模版,可以供你参考
解决方案十一:
C#实体、集合类生成器,连接数据库服务-》选择数据库-》选择表-》选择字段-》点击生成即可生成C#实体C#集合类C#版源码下载地址:http://d.download.csdn.net/down/317315/gongquan2008
解决方案十二:
你可以看一下动软的源代码

时间: 2024-09-20 07:44:50

用C#做一个实体类生成器的相关文章

【转】制作.net实体类生成器(1)

目的:因为.NET2005代码重构功能中的封装字段,一次只能封闭一个字段,造成程序员某种程度上的重复性工作.制作实体类生成器将要实现的功能:可根据填写的类名,类说明,命名空间,字段的类型.属性名.备注,自动生成对应的代码.制作工具:VS2005制作语言:C#制作平台:windows制作步骤:1) 2)3)添加user类4)右键>重构>封装字段5)用类似的方法封装name6)namespace classgenerate{    static class Program    {       

发布一个实体类属性生成小工具,给开发加点料

做了很久的代码生成工具,基本上都是基于表生成实体类属性的,把数据库表的信息拿出来,然后之乎者也后生成一个标准的实体类,包含字段.属性.描述等东西. 是基于整个数据库生成整个框架代码的工具,如我的代码生成工具Database2Sharp(下载地址http://www.iqidi.com/Download/Database2SharpSetup.rar ),基本上能满足前期的框架代码生成. 不过后来在做一些非数据库的项目的实体类,还有一些不是基于表一一对应关系的实体类,写这些字段属性的代码就显得比较

hibernate可不可以根据一个实体类查询出数据库中是否存在该记录

问题描述 hibernate可不可以根据一个实体类查询出数据库中是否存在该记录 需要判断一条记录是否已经在数据库中是否存在重复记录,用hql的话传入的参数会比较多

link环境下,codefirst如何定义一个实体类为多个表?

问题描述 link环境下,codefirst如何定义一个实体类为多个表? link环境下,codefirst如何定义一个实体类为多个表? 解决方案 http://www.cnblogs.com/Allen-Li/archive/2012/04/05/2433339.html 解决方案二: 一般操作是一个model class对象数据库的一个table

ios-实体类到另一个实体类传递数据

问题描述 实体类到另一个实体类传递数据 在chapterDC类中有一个selectedRegion,其中的区域数据需要传递到 regionDC.通过chapterDC来传递.chapterDC中有区域. 但是返回的结果不是0就是null. -(NSMutableArray *)getAllChapters{ NSMutableArray *returnArray = [[NSMutableArray alloc] init]; NSString *url = [NSString stringWi

c#-C#做一个益智类游戏 设计思路

问题描述 C#做一个益智类游戏 设计思路 新手,老师留了一个课题用C#做一个搭桥的益智类游戏,游戏的链接:http://www.puzzle-bridges.com/ 求大神给个思路,具体怎么设计这个游戏 解决方案 遍历所有节点,按照规则判断.岛和岛只能水平垂直连接,每个岛的桥的数量和数字相等,桥不能交叉生成游戏可以随机先产生节点和网格,随机删除一些路径,然后标记好数字,画出来.

java-求做一个Java类的设计的题

问题描述 求做一个Java类的设计的题 Account类:代表一个银行账户 balance属性:代表账户里的金额 deposit方法:向账户中存钱,如果传入的金额大于0,存钱,返回true,否则不存钱,返回false withdraw方法:从账户中取钱,如果余额够,取钱,返回true,如果余额不足,不取钱,返回false display方法:用于查询当前帐户金额 解决方案 public class Account { private double balance;//定义账户的金额 /** *

Hibernate:一个实体类,分别持久化到多个表,该如何弄?

问题描述 我只会在一个类上指定对应一个表,怎样灵活控制某个实体类对应的表?比如传递某个参数,它就存某个表里去了~~我用的是注解~~~!谢谢各位指教!! 解决方案 解决方案二:你要使用映射机制一对一.一对多.多对一.多对多.双向多对一....给你一个一对多的代码在一的一方添加<!--一对多--><setname="jds"lazy="false"><keycolumn="qxId"/><one-to-man

[WinForm]在一个界面把值用一个数组保存然后存到一个实体类中.

问题描述 界面有多个TxtBox值... 解决方案 解决方案二:怎么实现?高手来挖解决方案三:this.m_texts=newstring[textBoxes.Length];for(inti=0;i<textBoxes.Length;i++){m_texts[i]=textBoxes[i].Text;} 解决方案四:List<string>list=newList<string>();foreach(Controlcinthis.Controls){if(c.GetType