- 浏览: 1619405 次
- 性别:
- 来自: 福州
文章分类
- 全部博客 (583)
- strust2.0 (14)
- hibernate2.0 (5)
- java (13)
- javaScript (59)
- AJAX (8)
- TFS (6)
- 其它 (20)
- CSS (23)
- asp (18)
- Dojo (5)
- 项目管理 (3)
- SQLServer (25)
- oracle (26)
- .NET (221)
- 开源系统 (6)
- 常识 (41)
- 软件架构 (1)
- My SQL (1)
- SilverLight (10)
- Flex (1)
- window7 (1)
- 网络安全 (2)
- CMS (1)
- ECShop (4)
- 邮件系统 (9)
- Linq (0)
- 淘宝店铺经营宝典 (0)
- flash插件 (1)
- Hubble.net全文检索 (1)
- 在线编辑器 (1)
- 正则表达式 (1)
- 创业 (1)
- asp.net mvc (1)
- 全文检索 (0)
- 全文检索 HubbleDotNet (1)
- Android (27)
- TFS bin (1)
最新评论
-
z小小Jean:
有具体的解决方法吗
用命名imp导入DMP时报无法解析指定的连接标识符的解决办法 -
njoiop:
这些都是常用接口,IP地址、手机归属和身份证查询接口,基站定位 ...
IP地址、手机归属和身份证查询接口 -
Fs_sky:
那导出DMP如何包含序列等其他东西?
在plsql中如何导出dmp文件 -
qiywtc:
请问该怎么判断视频的格式再选择对应的播放格式来播放啊?
asp.net各种类型视频播放代码(全) -
xinghenhouzi:
楼主说的版本不同无法导入导出是什么意思?我用10g的exp.e ...
在plsql中如何导出dmp文件
在syscolumns 里有一个字段xtype,该字段表示列的数据类型,俺定义了两个函数,能根据xtype的值得到对应的dotnet中的数据类型和sqldb数据类型:
当然,还有一个函数先介绍一下,后面有它的具体用法:
现在有了上面的介绍和函数基础,我们可以逐步实现我们的目标了:
1.生成数据实体类的数据成员
大家看一下,对于一个字段id,整形,我们这样定义:
其中iId表示数据类型+字段名称,其中字段名称的第一个字母大写,代码实现如下:
参数DataSet ds中的ds是通过上一页的sa.Fill(ds)得到的,dr["name"]表示字段名称,dr["xtype"] 是字段类型。
UpFirstChar函数负责把字符串的第一个字母大写:
这样就生成了数据实体的数据成员。
2。生成Add方法
Add方法生成起来有点难度,可以参考第一页的程序,我们这里是通过参数的方法来实现add的。有一点要注意,就是在对参数赋值时要考虑参数值为空的情况。代码实现如下:
3。edit,delete的实现方法类似与add,就不详细说了,edit方法代码如下:
4。生成存储过程的执行方法和返回结果方法。存储过程的参数也在syscolumns表里有详细的说明,里面还记录了每个参数是不是传出参数,不过在这个函数里我没有考虑参数的方向,当然,要考虑进去也不是很麻烦。
对于存储过程生成结果集的函数如下:
下面是生成结果集的执行结果:
还有两个函数在程序中用到了,如下所示:
顺便说一下,文章开头的一段代码就是用这个程序生成的,当然,这种方法还有待完善的地方,希望大家指正。
原文连接:http://www.host01.com/article/Net/00020006/0561213181730059.htm
private string getType(int iType) { string strResult = ""; switch (iType) { case 34: strResult = "Byte[]"; break; case 35: case 99: case 167: case 175: case 231: case 239: strResult = "string"; break; case 48: case 52: case 56: case 127: strResult = "int"; break; case 58: case 61: strResult = "DateTime"; break; case 59: strResult = "Single"; break; case 60: case 106: case 108: case 122: strResult = "Decimal"; break; case 62: strResult = "Double"; break; case 104: strResult = "bool"; break; default: strResult = "None";//"unknow" ; break; } return strResult + " "; } private string getSqlDBType(int iType) { string strResult = ""; switch (iType) { case 34: strResult = "SqlDbType.Image"; break; case 35: strResult = "SqlDbType.Text"; break; case 48: strResult = "SqlDbType.TinyInt"; break; case 52: strResult = "SqlDbType.SmallInt"; break; case 56: strResult = "SqlDbType.Int"; break; case 58: strResult = "SqlDbType.SmallDateTime"; break; case 59: strResult = "SqlDbType.Real"; break; case 60: strResult = "SqlDbType.Money"; break; case 61: strResult = "SqlDbType.DateTime"; break; case 62: strResult = "SqlDbType.Float"; break; case 99: strResult = "SqlDbType.NText"; break; case 104: strResult = "SqlDbType.Bit"; break; case 106: strResult = "SqlDbType.Decimal"; break; case 108: strResult = "SqlDbType.Decimal"; break; case 122: strResult = "SqlDbType.SmallMoney"; break; case 127: strResult = "SqlDbType.BigInt"; break; case 165: strResult = "SqlDbType.VarBinary"; break; case 167: strResult = "SqlDbType.VarChar"; break; case 173: strResult = "SqlDbType.Binary"; break; case 175: strResult = "SqlDbType.Char"; break; case 189: strResult = "SqlDbType.Timestamp"; break; case 231: strResult = "SqlDbType.NVarChar"; break; case 239: strResult = "SqlDbType.NChar"; break; default: strResult = "None";//"unknow" ; break; } return strResult + " "; }
当然,还有一个函数先介绍一下,后面有它的具体用法:
private string getTypeShort(int iType) { string strResult = ""; switch (getType(iType).Trim()) { case "Byte[]": strResult = "img"; break; case "string": strResult = "str"; break; case "int": strResult = "i"; break; case "DateTime": strResult = "dt"; break; case "Single": strResult = "sig"; break; case "Decimal": strResult = "dec"; break; case "Double": strResult = "db"; break; case "bool": strResult = "bl"; break; default: strResult = "unknow"; break; } return strResult; }
现在有了上面的介绍和函数基础,我们可以逐步实现我们的目标了:
1.生成数据实体类的数据成员
大家看一下,对于一个字段id,整形,我们这样定义:
private int iId; public int Id { get { return iId; } set { iId = value; } }
其中iId表示数据类型+字段名称,其中字段名称的第一个字母大写,代码实现如下:
private string BuildMember(DataSet ds) { StringBuilder sb = new StringBuilder(); foreach (DataRow dr in ds.Tables[0].Rows) { int iType = (byte)dr["xtype"]; string strType = getType(iType); string strName = dr["name"].ToString(); strName = UpFirstChar(strName); string strShortType = getTypeShort(iType); string strPrivateline = "private " + strType + strShortType + strName + " ;\r\n"; sb.Append(strPrivateline); string strPublicline = "public " + strType + strName + " \r\n"; sb.Append(strPublicline); sb.Append("{\r\n"); sb.Append("\tget\r\n"); sb.Append("\t{\r\n"); sb.Append("\t\treturn " + strShortType + strName + " ;\r\n"); sb.Append("\t}\r\n"); sb.Append("\tset\r\n"); sb.Append("\t{\r\n"); sb.Append("\t\t" + strShortType + strName + " = value ;\r\n"); sb.Append("\t}\r\n"); sb.Append("}\r\n"); sb.Append("\r\n"); sb.Append("\r\n"); } return sb.ToString(); }
参数DataSet ds中的ds是通过上一页的sa.Fill(ds)得到的,dr["name"]表示字段名称,dr["xtype"] 是字段类型。
UpFirstChar函数负责把字符串的第一个字母大写:
private string UpFirstChar(string strvalue) { return strvalue.Substring(0, 1).ToUpper() + strvalue.Substring(1, strvalue.Length - 1); }
这样就生成了数据实体的数据成员。
2。生成Add方法
Add方法生成起来有点难度,可以参考第一页的程序,我们这里是通过参数的方法来实现add的。有一点要注意,就是在对参数赋值时要考虑参数值为空的情况。代码实现如下:
private string BuildAddFunction(DataSet ds) { StringBuilder sb = new StringBuilder(); sb.Append("public bool Add()\r\n"); sb.Append("{\r\n"); sb.Append("\tSqlConnection conn = SqlConn.Instance().Connection ;\r\n"); sb.Append("\r\n"); string strInsert = "\"insert into " + strTableName + "("; string strFiledList = ""; string strParamList = ""; foreach (DataRow dr in ds.Tables[0].Rows) { string strName = dr["name"].ToString(); strFiledList = strFiledList + strName + ", "; strParamList = strParamList + "@" + strName + ", "; } strFiledList = strFiledList.Trim().TrimEnd(','); strParamList = strParamList.Trim().TrimEnd(','); sb.Append("\tstring strSql = " + strInsert + strFiledList + ")\"\r\n"); sb.Append("\t+\"values(" + strParamList + ")\" ;\r\n"); sb.Append("\r\n"); sb.Append("\tSqlCommand command = new SqlCommand(strSql,conn) ;\r\n"); sb.Append("\r\n"); foreach (DataRow dr in ds.Tables[0].Rows) { string strName = dr["name"].ToString(); string strSqlType = getSqlDBType((byte)dr["xtype"]); string strShortType = getTypeShort((byte)dr["xtype"]); string strvalueName = strShortType + UpFirstChar(strName); int iLen = (Int16)dr["prec"]; string strLen = ""; if (strShortType == "str") strLen = strLen + "," + iLen; string strCommandName = "\tcommand.Parameters.Add(\"@" + strName + "\"," + strSqlType + strLen + ") ;\r\n"; string strCommandvalue = "\tcommand.Parameters[\"@" + strName + "\"].value = " + strvalueName + " ;\r\n"; string strCommandNullvalue = "\tcommand.Parameters[\"@" + strName + "\"].value = DBNull.value ;\r\n"; sb.Append(strCommandName); if (strShortType == "dt") sb.Append("\tif (" + strvalueName + "!= DateTime.Minvalue )\r\n"); else if (strShortType == "str") sb.Append("\tif (" + strvalueName + "!= null )\r\n"); else if (strShortType == "img") sb.Append("\tif (" + strvalueName + "!= null )\r\n"); else sb.Append(""); sb.Append(strCommandvalue); if (strShortType == "dt" || strShortType == "str" || strShortType == "img") { sb.Append("\telse\r\n"); sb.Append(strCommandNullvalue); } sb.Append("\r\n"); } sb.Append(AddCatchString()); sb.Append("}\r\n"); return sb.ToString(); }
3。edit,delete的实现方法类似与add,就不详细说了,edit方法代码如下:
private string BuildModifyFunction(DataSet ds) { StringBuilder sb = new StringBuilder(); sb.Append("public bool Modify()\r\n"); sb.Append("{\r\n"); sb.Append("\tSqlConnection conn = SqlConn.Instance().Connection ;\r\n"); string strModify = "string strSql =\"update " + strTableName + " set "; string strParamList = ""; foreach (DataRow dr in ds.Tables[0].Rows) { string strName = dr["name"].ToString(); strParamList = strParamList + strName + " = @" + strName + ", "; } strParamList = strParamList.Trim().TrimEnd(','); sb.Append("\t" + strModify + strParamList + " \"\r\n"); sb.Append("\t+ \" where id =@id \" ;\r\n"); sb.Append("\tSqlCommand command = new SqlCommand(strSql,conn) ;\r\n"); foreach (DataRow dr in ds.Tables[0].Rows) { string strName = dr["name"].ToString(); string strSqlType = getSqlDBType((byte)dr["xtype"]); string strShortType = getTypeShort((byte)dr["xtype"]); string strvalueName = strShortType + UpFirstChar(strName); int iLen = (Int16)dr["prec"]; string strLen = ""; if (strShortType == "str") strLen = strLen + "," + iLen; string strCommandName = "\tcommand.Parameters.Add(\"@" + strName + "\"," + strSqlType + strLen + ") ;\r\n"; string strCommandvalue = "\tcommand.Parameters[\"@" + strName + "\"].value = " + strvalueName + " ;\r\n"; sb.Append(strCommandName); sb.Append(strCommandvalue); sb.Append("\r\n"); } sb.Append(AddCatchString()); sb.Append("}\r\n"); return sb.ToString(); }
4。生成存储过程的执行方法和返回结果方法。存储过程的参数也在syscolumns表里有详细的说明,里面还记录了每个参数是不是传出参数,不过在这个函数里我没有考虑参数的方向,当然,要考虑进去也不是很麻烦。
private string BuildSPExec(DataSet ds) { StringBuilder sb = new StringBuilder(); string strFuncParam = ""; foreach (DataRow dr in ds.Tables[0].Rows) { int iType = (byte)dr["xtype"]; string strName = UpFirstChar(dr["name"].ToString().TrimStart('@')); string strType = getType(iType); string strSqlType = getSqlDBType(iType); string strShortType = getTypeShort(iType); strFuncParam = strFuncParam + "\r\n\t\t" + strType + " a" + strShortType + strName + ","; } strFuncParam = strFuncParam.TrimEnd(','); string strDef = "public bool ExeSP_" + strTableName + "(" + strFuncParam + ")\r\n"; sb.Append(strDef); sb.Append("{\r\n"); sb.Append("\tSqlConnection conn = SqlConn.Instance().Connection ;\r\n"); sb.Append("\r\n"); sb.Append("\tstring strSPName = \"" + strTableName + "\" ;\r\n"); sb.Append("\tSqlCommand command = new SqlCommand(strSPName,conn) ;\r\n"); sb.Append("\tcommand.CommandType = CommandType.StoredProcedure ;\r\n"); sb.Append("\r\n"); foreach (DataRow dr in ds.Tables[0].Rows) { int iType = (byte)dr["xtype"]; string strParaName = dr["name"].ToString(); string strName = UpFirstChar(strParaName.TrimStart('@')); string strSqlType = getSqlDBType(iType); string strShortType = getTypeShort(iType); string strvalue = " a" + strShortType + strName; int iLen = (Int16)dr["prec"]; string strLen = ""; if (strShortType == "str") strLen = strLen + "," + iLen; string strCommandAdd = "\tcommand.Parameters.Add(\"" + strParaName + "\"," + strSqlType + strLen + ") ;\r\n"; string strCommandvalue = "\tcommand.Parameters[\"" + strParaName + "\"].value=" + strvalue + " ;\r\n"; string strCommandNull = "\tcommand.Parameters[\"" + strParaName + "\"].value= DBNull.value ;\r\n"; sb.Append(strCommandAdd); if (strShortType == "dt") sb.Append("\tif (" + strvalue + "!= DateTime.Minvalue )\r\n\t"); else if (strShortType == "str") sb.Append("\tif (" + strvalue + "!= null )\r\n\t"); else if (strShortType == "img") sb.Append("\tif (" + strvalue + "!= null )\r\n\t"); else sb.Append(""); sb.Append(strCommandvalue); if (strShortType == "dt" || strShortType == "str" || strShortType == "img") { sb.Append("\telse\r\n\t"); sb.Append(strCommandNull); } sb.Append("\r\n"); } sb.Append(AddCatchString()); sb.Append("}\r\n"); return sb.ToString(); }
对于存储过程生成结果集的函数如下:
private string BuildSPGetData(DataSet ds) { StringBuilder sb = new StringBuilder(); string strFuncParam = ""; foreach (DataRow dr in ds.Tables[0].Rows) { int iType = (byte)dr["xtype"]; string strName = UpFirstChar(dr["name"].ToString().TrimStart('@')); string strType = getType(iType); string strSqlType = getSqlDBType(iType); string strShortType = getTypeShort(iType); strFuncParam = strFuncParam + "\r\n\t\t" + strType + " a" + strShortType + strName + ","; } strFuncParam = strFuncParam.TrimEnd(','); string strDef = "public DataSet QuerySP_" + strTableName + "(" + strFuncParam + ")\r\n"; sb.Append(strDef); sb.Append("{\r\n"); sb.Append("\tSqlConnection conn = SqlConn.Instance().Connection ;\r\n"); sb.Append("\r\n"); sb.Append("\tstring strSPName = \"" + strTableName + "\" ;\r\n"); sb.Append("\tSqlCommand command = new SqlCommand(strSPName,conn) ;\r\n"); sb.Append("\tcommand.CommandType = CommandType.StoredProcedure ;\r\n"); sb.Append("\r\n"); foreach (DataRow dr in ds.Tables[0].Rows) { int iType = (byte)dr["xtype"]; string strParaName = dr["name"].ToString(); string strName = UpFirstChar(strParaName.TrimStart('@')); string strSqlType = getSqlDBType(iType); string strShortType = getTypeShort(iType); string strvalue = " a" + strShortType + strName; int iLen = (Int16)dr["prec"]; string strLen = ""; if (strShortType == "str") strLen = strLen + "," + iLen; string strCommandAdd = "\tcommand.Parameters.Add(\"" + strParaName + "\"," + strSqlType + strLen + ") ;\r\n"; string strCommandvalue = "\tcommand.Parameters[\"" + strParaName + "\"].value=" + strvalue + " ;\r\n"; string strCommandNull = "\tcommand.Parameters[\"" + strParaName + "\"].value= DBNull.value ;\r\n"; sb.Append(strCommandAdd); if (strShortType == "dt") sb.Append("\tif (" + strvalue + "!= DateTime.Minvalue )\r\n\t"); else if (strShortType == "str") sb.Append("\tif (" + strvalue + "!= null )\r\n\t"); else if (strShortType == "img") sb.Append("\tif (" + strvalue + "!= null )\r\n\t"); else sb.Append(""); sb.Append(strCommandvalue); if (strShortType == "dt" || strShortType == "str" || strShortType == "img") { sb.Append("\telse\r\n\t"); sb.Append(strCommandNull); } sb.Append("\r\n"); } sb.Append("\tSqlDataAdapter sdaResult = new SqlDataAdapter(command) ;\r\n"); sb.Append("\tDataSet ds = new DataSet() ;\r\n"); sb.Append(AddCatchQueryString()); sb.Append("}\r\n"); return sb.ToString(); }
下面是生成结果集的执行结果:
public DataSet QuerySP_ddms_GetBank( int aiPrsn_id) { SqlConnection conn = SqlConn.Instance().Connection; string strSPName = "ddms_GetBank"; SqlCommand command = new SqlCommand(strSPName, conn); command.CommandType = CommandType.StoredProcedure; command.Parameters.Add("@prsn_id", SqlDbType.Int); command.Parameters["@prsn_id"].value = aiPrsn_id; SqlDataAdapter sdaResult = new SqlDataAdapter(command); DataSet ds = new DataSet(); try { sdaResult.Fill(ds); } catch (Exception e) { throw (new Exception("Error in the Database" + e.Message)); } finally { sdaResult.Dispose(); } return ds; }
还有两个函数在程序中用到了,如下所示:
private string AddCatchString() { StringBuilder sb = new StringBuilder(); sb.Append("\ttry\r\n"); sb.Append("\t{\r\n"); sb.Append("\t\tconn.Open() ;\r\n"); sb.Append("\t\tcommand.ExecuteNonQuery() ;\r\n"); sb.Append("\t\treturn true ;\r\n"); sb.Append("\t}\r\n"); sb.Append("\tcatch(Exception e)\r\n"); sb.Append("\t{\r\n"); sb.Append("\t\tthrow(new Exception(\"Error in the Database\"+e.Message)) ;\r\n"); sb.Append("\t}\r\n"); sb.Append("\tfinally\r\n"); sb.Append("\t{\r\n"); sb.Append("\t\tconn.Close() ;\r\n"); sb.Append("\t}\r\n"); return sb.ToString(); } private string AddCatchQueryString() { StringBuilder sb = new StringBuilder(); sb.Append("\ttry\r\n"); sb.Append("\t{\r\n"); sb.Append("\t\tsdaResult.Fill(ds) ;\r\n"); sb.Append("\t}\r\n"); sb.Append("\tcatch(Exception e)\r\n"); sb.Append("\t{\r\n"); sb.Append("\t\tthrow(new Exception(\"Error in the Database\"+e.Message)) ;\r\n"); sb.Append("\t}\r\n"); sb.Append("\tfinally\r\n"); sb.Append("\t{\r\n"); sb.Append("\t\tsdaResult.Dispose() ;\r\n"); sb.Append("\t}\r\n"); sb.Append("\treturn ds ;\r\n"); return sb.ToString(); }
顺便说一下,文章开头的一段代码就是用这个程序生成的,当然,这种方法还有待完善的地方,希望大家指正。
原文连接:http://www.host01.com/article/Net/00020006/0561213181730059.htm
发表评论
-
【转】C#定时执行某个程序
2015-03-16 17:33 650using System; using System. ... -
多行文本框字符数长度验证的解决方案
2012-03-02 16:04 1150在ASP.NET系统中经常会遇到验证文本框长度,比如数据库里是 ... -
【转】asp.net(c#)通过两个点的经纬度计算距离
2012-01-12 14:14 1340原理: 地球赤道上环绕地球一周走一圈共40075.04公里 ... -
【转】GSM手机短信软件的实现(C#)
2011-11-30 13:55 1239http://www.cnblogs.com/Engin/ar ... -
[转]C#开发短信收发软件的原理
2011-11-16 16:44 1602坛子里好像很多人对如何自己用C#开发手机短信有兴趣,正好我也做 ... -
TCPClient 类实现网络互联、通信
2011-10-29 11:16 2887TcpClient 为 TCP 网络服务提供客户端连接。 S ... -
Hubble.Net实现全文检索
2011-07-25 19:30 3969一、 下载安装 到Hubble.net 项目首页 http: ... -
c# 获取当前周第一天、最后一天,当前月第一天、最后一天的实现代码
2011-04-17 18:39 5189获取当前周工作日第一天、最后一天 int dayOfWee ... -
c#通过调用7z.exe实现解压文件
2011-03-05 15:47 45667-Zip 简介 7-Zip 是一款号称有着现今最高压缩比的 ... -
【转】IEnumerable 和 IEnumerator 接口
2011-03-04 17:12 1971类继承关系:public interface IQueryab ... -
【转】C#获取文件的绝对路径
2011-03-04 17:08 2420要在c#中获取路径有好多方法,一般常用的有以下五种: ... -
ListBox之间的数据项的移动操作
2010-09-29 11:04 1504<%@ Page Language="C# ... -
【转】asp.net中URL参数传值中文乱码的三种解决办法
2010-09-21 22:31 3365在做Asp.Net开发的时候,经常会遇到页面乱码的问题,下面是 ... -
【转】ASP.NET文件下载函数
2010-09-21 22:29 1348在你的Page_Load中添加这样的代码: Page.Re ... -
【转】在ASP.NET中实现多文件上传
2010-09-21 22:25 1179在以前的Web应用中,上传文件是个很麻烦的事,现在有了.NET ... -
[转]ASP.NET中常用的文件上传下载方法
2010-09-21 22:23 1764文件的上传下载是我们在实际项目开发过程中经常需要用到的技 ... -
HTML文章中截取摘要的问题[转]
2010-06-09 10:46 1819博客系统通常的做法是,在博客的首页只显示文章的摘要,点击标题进 ... -
获取 asp:Button 控件的的ComandName值的方法
2010-05-22 17:31 1199protected void btn_Save_Click ... -
ASP.NET防止用户多次登录的方法
2010-05-06 12:34 1535常见的处理方法是,在 ... -
使用 Enter 键提交表单
2010-04-27 14:04 1287一、使用 JS 代码 我们在表单里面的 TextBox (as ...
相关推荐
开发DOTNET应该对这个不陌生,功能相当不错,自动生成各种DOTNET的三层模型,工厂模型,通过数据表自动生成实体类。 大大减少了开发的时间。
。Net下的强大的代码生成工具 可以对实体类自动生存,自动与数据库映射
基于T4引擎根据模板自动生成代码,如生成实体类、业务逻辑类、前台页面以及后代代码等。 运行环境: dotnet framework4.0
C#代码生成器源码,可根据数据结构生成数据表的实体(Entity),数据操作类(Access).开发环境:vs2005+sql2005.
它集系统设计,代码自动生成等功能于一体 系统运用分层原理和组件原理,将所有的基于数据库访问的系统划分为用户界面层(UI),业务规则层(BLL), 数据访问层(DAL)和数据库层(DB). 每一下层为上层提供支持,一般不跨层...
该版本相对于2.0增加了自编译数据表字段,不再需要使用CodeSmith工具,真正实现代码的自动化,同进修正了在分页查询出现的问题 本工具附有详细的使用说明,有助于用户更好地使用本工具 如有问题请联系本人...
该工具可以实现存储过程自动生成增\删\改\查的功能和操作类代码,并且还可以根据表字段定制代码.安全实惠,简洁精致,该版本为升级版1.1 为了节约网络带宽,请通过加入qq技术讨论群:23776951,文件(约20k)在群共享...
http://download.csdn.net/source/270762 可以实现存储过程自动生成增\删\改\查的功能和操作类代码,并且还可以根据表字段定制代码.安全实惠,简洁精致,大大提高程序员的生产...
Textura.Code是Roslyn API的包装器,用于生成,保存和编译C#代码。 它提供了方法和帮助器来生成类,方法,语句和表达式。
codesmith(数据操作层代码自动生成) soap (开发包,包括高级特征),Nunit
RefitGenerator是一个全球性dotnet tool用来生成从OpenAPI的架构客户端代码。 用法 输入regen -h将显示参数列表: -u或--url -OpenApi json或yaml的URL -f或--file -OpenApi json或yaml本地文件的路径 -o或--...
简单,好用的模板,可以帮你生成大部分代码。 除了表示层的代码外,数据访问层、业务逻辑层代码都会自动生成。
wps的二次开发网上相关资料...WpsHelper是一个生成wps报表的小程序,内含源代码,简单的封装了一些关于其基本操作的方法,有需要的人可以直接使用,也可参考改进,少走弯路吧。基于dotNet平台的,若要运行还需安装有wps
WebSokcetRPC-用于.NET的WebSocket上的RPC 用于.NET的WebSocket RPC库,具有自动JavaScript客户端代码生成功能,支持ASP.NET Core。 教程:为什么选择WebSocketRPC? 轻巧的唯一的依赖关系是用于序列化/反序列化的库...
Vue + .NetCore前初步分离,支持对前端,后台基础业务代码扩展的快速发开框架 ...支持(主从表)一对一前代码自动生成,并支持数据源自动绑定与业务代码扩展,不需要写任何代码 支持一对多从表自定义扩展(不限
2.增加了静默编译与生成调试信息选项 3.修复了目录无法恢复的问题 2007-06-13 更新 1.修正了一处在修复 IL 字符串时出现的问题,感谢 wanfu 2.修正了在修复 IL 或移除强名后对话框位置置底的问题,感谢 wanfu 3....
自动生成课程表。 :sparkles: 特征 该程序旨在自动为中大学生生成课程表,以帮助他们进行学术规划。 :link: 获得访问权限 该程序已部署在Azure上 :package: 。 您可以从访问它。 :rainbow: 浏览器支持 边缘 ...
可克隆使用C#Source Generator自动生成克隆方法有时您想克隆一个对象。 您可以实现 clone 方法,但是当开发人员添加新的 Field 或 Property 时,也应该更改 clone 方法。 另一种方法是使用性能不佳的反射。 此源...
典型相关分析matlab实现代码 HanlpNet HanLp的dotNet调用,利用IKVM 调用java 开发的hanlp.jar包 强大的NLP轮子,目前在.net上暂无实现, 为方便.net使用HanLp使用收集生成1.7.7版本的dll工具类与使用demo合集(正在...
基于的C#动态程序集构建库,该库允许开发者在运行时使用C#代码生成域/程序集/类/结构体/枚举/连接/方法等,从而程序在运行的时候可以增加新的Natasha集成了域管理/插件管理,可以实现域隔离,域卸载,热拔插等功能...