Create C# classes based of MySQL table Create C# classes based of MySQL table database database

Create C# classes based of MySQL table


maybe you need something like this:

select 'my_table' into @table; #table nameselect 'my_database' into @schema; #database nameselect concat('public class ',@table,'{') unionselect concat('public ',tps.dest,' ',column_name,'{get;set;}') from  information_schema.columns cjoin( #datatypes mappingselect 'char' as orign ,'string' as dest union allselect 'varchar' ,'string' union allselect 'longtext' ,'string' union allselect 'datetime' ,'DateTime?' union allselect 'text' ,'string' union allselect 'bit' ,'int?' union allselect 'bigint' ,'int?' union allselect 'int' ,'int?' union allselect 'double' ,'double?' union allselect 'decimal' ,'double?' union allselect 'date' ,'DateTime?' union allselect 'tinyint' ,'bool?') tps on c.data_type like tps.orignwhere table_schema=@schema and table_name=@table unionselect '}';


I adjusted the sql of MeelStorm because it was appearing some errors regarding the language. I put other types of data as well and I drop the class declaration because this is unnecessary to me. So the final result is:

select concat('public ',tps.dest,' ',column_name,'{get;set;}') as code from  information_schema.columns cjoin(select 'char' as orign ,'string' as dest union allselect 'varchar' ,'string' union allselect 'longtext' ,'string' union allselect 'datetime' ,'DateTime' union allselect 'text' ,'string' union allselect 'bit' ,'int' union allselect 'bigint' ,'int' union allselect 'int' ,'int' union allselect 'double' ,'double' union allselect 'decimal' ,'double' union allselect 'date' ,'DateTime' union allselect 'tinyint' ,'bool') tps on c.data_type like tps.orignwhere table_schema='your_schema' and table_name='your_table' order by c.ordinal_position

Hope it helps. Cheers!


here is great work done :

http://www.code4copy.com/post/generate-c-sharp-model-class-mysql-table

Create a procedure as follows :

-- ---------------------------------------------------------------------------------- Routine DDL-- Note: comments before and after the routine body will not be stored by the server-- --------------------------------------------------------------------------------DELIMITER $$CREATE DEFINER=`root`@`localhost` PROCEDURE `GenCSharpModel`(in pTableName VARCHAR(255) )BEGINDECLARE vClassName varchar(255);declare vClassCode mediumtext;declare v_codeChunk varchar(1024);DECLARE v_finished INTEGER DEFAULT 0;DEClARE code_cursor CURSOR FOR    SELECT code FROM temp1; DECLARE CONTINUE HANDLER         FOR NOT FOUND SET v_finished = 1;set vClassCode ='';/* Make class name*/    SELECT (CASE WHEN col1 = col2 THEN col1 ELSE concat(col1,col2)  END) into vClassName    FROM(    SELECT CONCAT(UCASE(MID(ColumnName1,1,1)),LCASE(MID(ColumnName1,2))) as col1,    CONCAT(UCASE(MID(ColumnName2,1,1)),LCASE(MID(ColumnName2,2))) as col2    FROM    (SELECT SUBSTRING_INDEX(pTableName, '_', -1) as ColumnName2,        SUBSTRING_INDEX(pTableName, '_', 1) as ColumnName1) A) B;    /*store all properties into temp table*/    CREATE TEMPORARY TABLE IF NOT EXISTS  temp1 ENGINE=MyISAM      as (    select concat( 'public ', ColumnType , ' ' , FieldName,' { get; set; }') code    FROM(    SELECT (CASE WHEN col1 = col2 THEN col1 ELSE concat(col1,col2)  END) AS FieldName,     case DATA_TYPE             when 'bigint' then 'long'            when 'binary' then 'byte[]'            when 'bit' then 'bool'            when 'char' then 'string'            when 'date' then 'DateTime'            when 'datetime' then 'DateTime'            when 'datetime2' then 'DateTime'            when 'datetimeoffset' then 'DateTimeOffset'            when 'decimal' then 'decimal'            when 'float' then 'float'            when 'image' then 'byte[]'            when 'int' then 'int'            when 'money' then 'decimal'            when 'nchar' then 'char'            when 'ntext' then 'string'            when 'numeric' then 'decimal'            when 'nvarchar' then 'string'            when 'real' then 'double'            when 'smalldatetime' then 'DateTime'            when 'smallint' then 'short'            when 'mediumint' then 'INT'            when 'smallmoney' then 'decimal'            when 'text' then 'string'            when 'time' then 'TimeSpan'            when 'timestamp' then 'DateTime'            when 'tinyint' then 'byte'            when 'uniqueidentifier' then 'Guid'            when 'varbinary' then 'byte[]'            when 'varchar' then 'string'            when 'year' THEN 'UINT'            else 'UNKNOWN_' + DATA_TYPE        end ColumnType    FROM(    select CONCAT(UCASE(MID(ColumnName1,1,1)),LCASE(MID(ColumnName1,2))) as col1,    CONCAT(UCASE(MID(ColumnName2,1,1)),LCASE(MID(ColumnName2,2))) as col2, DATA_TYPE    from    (SELECT SUBSTRING_INDEX(COLUMN_NAME, '_', -1) as ColumnName2,    SUBSTRING_INDEX(COLUMN_NAME, '_', 1) as ColumnName1,    DATA_TYPE, COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS  WHERE table_name = pTableName) A) B)C);    set vClassCode = '';    /* concat all properties*/    OPEN code_cursor;            get_code: LOOP                FETCH code_cursor INTO v_codeChunk;                IF v_finished = 1 THEN                    LEAVE get_code;                END IF;                -- build code                select  CONCAT(vClassCode,'\r\n', v_codeChunk) into  vClassCode ;            END LOOP get_code;        CLOSE code_cursor;drop table temp1;/*make class*/select concat('public class ',vClassName,'\r\n{', vClassCode,'\r\n}');END

However a little manual work will require.