问题描述
老师要我们效仿.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
解决方案十二:
你可以看一下动软的源代码