Entity.tt 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <#@ template debug="false" hostspecific="true" language="C#" #>
  2. <#@ assembly name="System.Data" #>
  3. <#@ assembly name="System.xml" #>
  4. <#@ import namespace="System.Collections.Generic" #>
  5. <#@ import namespace="System.Data.SqlClient" #>
  6. <#@ import namespace="System.Data" #>
  7. <#@ import namespace="System.Text.RegularExpressions" #>
  8. <#@ assembly name="System.Core" #>
  9. <#@ import namespace="System.Linq" #>
  10. // 导入MultipleOutputHelper.ttinclude文件
  11. <#@ include file="..\MultipleOutputHelper.ttinclude" #>
  12. <#
  13. string connectionString=@"Server=192.168.0.240; Database=NXDynamic; user Id=sa;password=1q2w3e4r!@";
  14. SqlConnection conn = new SqlConnection(connectionString);
  15. conn.Open();
  16. string selectQuery ="SET FMTONLY ON; select * from @tableName; SET FMTONLY OFF;";
  17. SqlCommand command = new SqlCommand(selectQuery,conn);
  18. SqlDataAdapter ad = new SqlDataAdapter(command);
  19. System.Data.DataSet ds = new DataSet();
  20. var manager = Manager.Create(Host, GenerationEnvironment);
  21. string[] restrictions = new string[4];
  22. restrictions[1] = "dbo";
  23. restrictions[3] = "BASE TABLE";
  24. System.Data.DataTable schema = conn.GetSchema("Tables",restrictions);
  25. foreach(System.Data.DataRow row in schema.Rows)
  26. {
  27. ds.Tables.Clear();
  28. string tb_name= row["TABLE_NAME"].ToString();
  29. command.CommandText = selectQuery.Replace("@tableName",row["TABLE_NAME"].ToString());
  30. ad.FillSchema(ds, SchemaType.Mapped,tb_name);
  31. manager.StartNewFile(tb_name+".cs");#>
  32. using System;
  33. using System.Collections.Generic;
  34. using System.Runtime.Serialization;
  35. using DapperORMCore.Dapper;
  36. namespace NXWMS.DynamicDataAccess.BLL
  37. {
  38. /// <summary>
  39. /// 实体-<#=tb_name#>
  40. /// </summary>
  41. public partial class <#=tb_name#> : IEntity
  42. {
  43. <#
  44. PushIndent(" ");
  45. Regex reg = new Regex("^[0-9]+$");
  46. foreach (DataColumn dc in ds.Tables[0].Columns)
  47. {
  48. //ADP表结构设计真乱,还有用111作为列头的? 还有用相同列名为表名的
  49. Match ma=reg.Match(dc.ColumnName);
  50. if(!ma.Success && tb_name!=dc.ColumnName)
  51. {
  52. WriteLine("public " + dc.DataType.Name+ (dc.AllowDBNull && (dc.DataType.Name.ToLower() != "string" &&
  53. dc.DataType.Name.ToLower() != "byte[]") ? "? ": " ") + dc.ColumnName + " { get; set; }");
  54. }
  55. }
  56. PopIndent();
  57. #>
  58. }
  59. }
  60. <#
  61. manager.EndBlock();
  62. }
  63. conn.Close();
  64. manager.Process(true);
  65. #>