Advertisement
Willcode4cash

Generate Partials Classes From DataContext

Sep 22nd, 2016
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.86 KB | None | 0 0
  1. void Main()
  2. {
  3.     var dataContextName = "ImageBoard";
  4.     var schemaName = "user_image";
  5.     var outputFolder = "c:\\data\\";
  6.     GenerateClasses(dataContextName, schemaName, outputFolder);
  7. }
  8.  
  9. public void GenerateClasses(string dataContextName, string schemaName, string outputFolder)
  10. {
  11.     foreach (var table in this.Mapping.GetTables().Where(t =>
  12.         !t.TableName.Contains("sysdiagrams"))
  13.         .OrderBy(t => t.TableName))
  14.     {
  15.         var tableName = Regex
  16.             .Replace(table.TableName, @"([\[\]])", string.Empty)
  17.             .Replace(schemaName + ".", string.Empty);
  18.         var contents = new List<string>();
  19.  
  20.         var columns = from c in table.RowType.DataMembers
  21.         where c.DbType != null
  22.         select new {
  23.             c.Name,
  24.             c.DbType,
  25.             cType = c.Type.Name,
  26.             c.CanBeNull,
  27.             c.Type,
  28.             c.MappedName,
  29.             c.IsPrimaryKey };
  30.  
  31.         StringBuilder sb = new StringBuilder();
  32.        
  33.         sb.AppendLine($"[MetadataType(typeof({tableName}Metadata))]");
  34.         sb.AppendLine($"public partial class {tableName} {{");
  35.         sb.AppendLine($"\tpublic static bool Add(ref {tableName} {tableName.ToLower()}) {{");
  36.         sb.AppendLine($"\t\tvar db = new {dataContextName}DataContext();");
  37.         sb.AppendLine($"\t\tvar result = false;\n");
  38.         sb.AppendLine($"\t\ttry {{");
  39.         sb.AppendLine($"\t\t\tresult = true;");
  40.         sb.AppendLine($"\t\t}}");
  41.         sb.AppendLine($"\t\tcatch(Exception ex) {{");
  42.         sb.AppendLine($"\t\t\tresult = false;");
  43.         sb.AppendLine($"\t\t}}\n");
  44.         sb.AppendLine($"\t\treturn result;");
  45.         sb.AppendLine($"\t}}\n");
  46.  
  47.         sb.AppendLine($"\tpublic static bool Delete({tableName} {tableName.ToLower()}) {{");
  48.         sb.AppendLine($"\t\tvar db = new {dataContextName}DataContext();");
  49.         sb.AppendLine($"\t\tvar result = false;\n");
  50.         sb.AppendLine($"\t\ttry {{");
  51.         sb.AppendLine($"\t\t\tresult = true;");
  52.         sb.AppendLine($"\t\t}}");
  53.         sb.AppendLine($"\t\tcatch(Exception ex) {{");
  54.         sb.AppendLine($"\t\t\tresult = false;");
  55.         sb.AppendLine($"\t\t}}\n");
  56.         sb.AppendLine($"\t\treturn result;");
  57.         sb.AppendLine($"\t}}\n");
  58.  
  59.         sb.AppendLine($"\tpublic static bool Update({tableName} {tableName.ToLower()}) {{");
  60.         sb.AppendLine($"\t\tvar db = new {dataContextName}DataContext();");
  61.         sb.AppendLine($"\t\tvar result = false;\n");
  62.         sb.AppendLine($"\t\ttry {{");
  63.         sb.AppendLine($"\t\t\tresult = true;");
  64.         sb.AppendLine($"\t\t}}");
  65.         sb.AppendLine($"\t\tcatch(Exception ex) {{");
  66.         sb.AppendLine($"\t\t\tresult = false;");
  67.         sb.AppendLine($"\t\t}}\n");
  68.         sb.AppendLine($"\t\treturn result;");
  69.         sb.AppendLine($"\t}}\n");
  70.  
  71.         sb.AppendLine($"\tpublic static bool Get(int {tableName.ToLower()}ID, out {tableName} {tableName.ToLower()}) {{");
  72.         sb.AppendLine($"\t\tvar db = new {dataContextName}DataContext();");
  73.         sb.AppendLine($"\t\tvar result = false;\n");
  74.         sb.AppendLine($"\t\ttry {{");
  75.         sb.AppendLine($"\t\t\tresult = true;");
  76.         sb.AppendLine($"\t\t}}");
  77.         sb.AppendLine($"\t\tcatch(Exception ex) {{");
  78.         sb.AppendLine($"\t\t\tresult = false;");
  79.         sb.AppendLine($"\t\t}}\n");
  80.         sb.AppendLine($"\t\treturn result;");
  81.         sb.AppendLine($"\t}}\n");
  82.  
  83.         sb.AppendLine($"\tprivate sealed class {tableName}Metadata {{");
  84.  
  85.         foreach (var column in columns.Where(c => !c.IsPrimaryKey))
  86.         {
  87.             sb.AppendLine($"\t\t[Display(Name = \"{column.Name}\", Prompt = \"{column.Name}\")]");
  88.  
  89.             if (!column.CanBeNull)
  90.             {
  91.                 sb.AppendLine($"\t\t[Required(ErrorMessage = \"Required\")]");
  92.             }
  93.  
  94.             sb.Append($"\t\tpublic {ConvertType(column.cType)} {column.Name} {{ get; set; }}\n");
  95.         }
  96.  
  97.         sb.AppendLine($"\t}}");
  98.         sb.AppendLine($"}}\n");
  99.         var classCode = sb.ToString();
  100.         File.WriteAllText($"{outputFolder}{tableName}.cs", sb.ToString());
  101.     }
  102. }
  103.  
  104. public string ConvertType(string sqlTypeName)
  105. {
  106.     switch (sqlTypeName)
  107.     {
  108.         case "DateTime":
  109.             return "DateTime";
  110.         case "Int16":
  111.         case "Int32":
  112.             return "int";
  113.         case "Boolean":
  114.         case "Bit":
  115.             return "bool";
  116.         case "String":
  117.             return "string";
  118.         default:
  119.             return sqlTypeName;
  120.     }
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement