Generate C# Model Class Builder for Table

Developing the wrapper classes is one of the complex task for database driven application, which deals with large number tables with many columns.
 
This procedure makes you to generate complete model of C# class file corresponding to the table, which we have passed as a parameter.
 
Examples: exec prc_generate_c#_classbuilder_table @tablename = 'employeemaster'
  1. Alter procedure prc_generate_c#_classbuilder_table  
  2. @tablename sysname  
  3. as  
  4. begin  
  5.   
  6. set nocount on  
  7.   
  8. declare @tbl_classbuilder table (code varchar(max))  
  9.   
  10. /*step 1 : define class name*/  
  11. insert into @tbl_classbuilder  
  12.     select 'public class ' + @tablename + char(13) + char(10) + '{'  
  13.   
  14. /*step 2 : define class constructor*/  
  15. insert into @tbl_classbuilder  
  16.     select char(13) + char(10) + '#region constructors' + char(13) + char(10)  
  17.   
  18. insert into @tbl_classbuilder  
  19.     select char(9) + 'public ' + @tablename + '()'  
  20.     + char(13) + char(10) + char(9) + '{'  
  21.     + char(13) + char(10) + char(9) + '}'  
  22.   
  23. insert into @tbl_classbuilder  
  24.     select '#endregion' + char(13) + char(10)  
  25.   
  26. /*step 3 : define private fields*/  
  27. insert into @tbl_classbuilder  
  28.     select char(13) + char(10) + '#region private fields' + char(13) + char(10)  
  29.   
  30. insert into @tbl_classbuilder  
  31.     select char(9) + 'private ' +  
  32.         case  
  33.         when data_type like '%char%' then 'string '  
  34.         when data_type like '%int%' then 'int '  
  35.         when data_type like '%datetime%' then 'datetime '  
  36.         when data_type like '%binary%' then 'byte[] '  
  37.         when data_type = 'bit' then 'bool '  
  38.         when data_type like '%text%' then 'string '  
  39.         when data_type = 'money' then 'double '  
  40.         when data_type = 'float' then 'double '  
  41.         else 'object '  
  42.         end + '_' + column_name + ';' + char(9)  
  43.     from information_schema.columns  
  44.     where table_name = @tablename  
  45.     order by ordinal_position  
  46.   
  47. /*step 4 : define public properties*/  
  48. insert into @tbl_classbuilder  
  49.     select '#endregion' +  
  50.     char(13) + char(10)  
  51.   
  52. insert into @tbl_classbuilder  
  53.     select char(13) + char(10) + '#region public properties' + char(13) + char(10)  
  54.   
  55. insert into @tbl_classbuilder  
  56.     select char(9) + 'public ' +  
  57.         case  
  58.         when data_type like '%char%' then 'string '  
  59.         when data_type like '%int%' then 'int '  
  60.         when data_type like '%datetime%' then 'datetime '  
  61.         when data_type like '%binary%' then 'byte[] '  
  62.         when data_type = 'bit' then 'bool '  
  63.         when data_type like '%text%' then 'string '  
  64.         when data_type = 'money' then 'double '  
  65.         when data_type = 'float' then 'double '  
  66.         else 'object '  
  67.         end + column_name +  
  68.         char(13) + char(10) + char(9) + '{' +  
  69.         char(13) + char(10) + char(9) + char(9) +  
  70.         'get { return _' + column_name + '; }' +  
  71.         char(13) + char(10) + char(9) + char(9) +  
  72.         'set { _' + column_name + ' = value; }' +  
  73.         char(13) + char(10) + char(9) + '}'  
  74.     from information_schema.columns  
  75.     where table_name = @tablename  
  76.     order by ordinal_position  
  77.   
  78. insert into @tbl_classbuilder  
  79.     select '#endregion' +  
  80.     char(13) + char(10) + '}'  
  81.   
  82. /*step 5 : complete model class for the particular table*/  
  83. select code from @tbl_classbuilder  
  84.   
  85. set nocount off  
  86. end