WEB开发网
开发学院软件开发C语言 C# 代码生成器 & 网站架构设计 阅读

C# 代码生成器 & 网站架构设计

 2010-09-30 21:06:04 来源:WEB开发网   
核心提示: 查看原图(大图)图 3创建后的 C# 类,会自动产生在此网站底下的 Entities 文件夹里下图 4 为创建的 C# 类其内容,C# 代码生成器 & 网站架构设计(2),C# 的类型,会和数据库中的类型自动做对应,所要撷取的多个 ResultSet (此为多行多列的二维类型数据), 以

C# 代码生成器 & 网站架构设计

查看原图(大图)

图 3 创建后的 C# 类,会自动产生在此网站  底下的 Entities 文件夹里

下图 4 为创建的 C# 类其内容。C# 的类型,会和数据库中的类型自动做对应,例如 string 对应 varchar、Int16 对应 smallint。当然您可视自己的需求,修改代码再扩充。

C# 代码生成器 & 网站架构设计

查看原图(大图)

图 4 创建的 C# 类其内容,用户可选择是否要加入 NHibernate 的 Attribute

本示例用了一个 ADO.NET 书上教的技巧,搭配 DataReader,在单一次的数据库 connection 中,一次就取回多句 SQL 语句,所要撷取的多个 ResultSet (此为多行多列的二维类型数据), 以提升程序性能,如下方代码所示:

genDataSet()

1 using (SqlConnection conn = new SqlConnection(strConnString))
2             {
3                 conn.Open();
4                 using (SqlCommand cmd = new SqlCommand())
5                 {
6                     cmd.Connection = conn;
7                     cmd.CommandText = strSql;
8                     using (SqlDataReader dr = cmd.ExecuteReader())
9                     {
10                         //多次颉取 ResultSet (多行多列的二维类型数据)
11                          for (int ii = 0; ii < intDataTableCount; ii++ )
12                         {
13                             dtInsertInput = new DataTable();
14 
15                             dcInsertInput = new DataColumn();
16                             dcInsertInput.DataType = Type.GetType("System.String");
17                             dcInsertInput.ColumnName = "TableName";
18                             dtInsertInput.Columns.Add(dcInsertInput);
19 
20                             dcInsertInput = new DataColumn();
21                             dcInsertInput.DataType = Type.GetType("System.String");
22                             dcInsertInput.ColumnName = "ColumnName";
23                             dtInsertInput.Columns.Add(dcInsertInput);
24 
25                             dcInsertInput = new DataColumn();
26                             dcInsertInput.DataType = Type.GetType("System.String");
27                             dcInsertInput.ColumnName = "DataType";
28                             dtInsertInput.Columns.Add(dcInsertInput);
29 
30                             while (dr.Read())
31                             {
32                                 drInsertInput = dtInsertInput.NewRow();
33                                 drInsertInput["TableName"] = dr.GetString(1);
34                                 drInsertInput["ColumnName"] = dr.GetString(2);
35                                 drInsertInput["DataType"] = dr.GetString(6);
36                                 dtInsertInput.Rows.Add(drInsertInput);
37                                 //Response.Write(dr.GetString(1) + ", " + dr.GetString(2).ToString() + ", " + dr.GetString(6).ToString() + "<br>");
38                              }
39 
40                             //将这一次撷取的 ResultSet,存入一个新的 DataTable 后,再把这一个 DataTable 存入 DataSet 里
41                              ds.Tables.Add(dtInsertInput);
42 
43                             //dtInsertInput.Clear();
44                              
45                             dr.NextResult();        //到 DataReader 的下一个 ResultSet 继续读取数据
46                                                          
47                            Label1.Text += "已经创建了第 " + ds.Tables.Count + " 个类<br>";
48                         }
49                     }
50 
51                     dcInsertInput.Dispose();
52                     dtInsertInput.Dispose();
53                 }
54             }
55 

上一页  1 2 3 4 5  下一页

Tags:代码 生成器 amp

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接