SQL

Generate C# Model Class From Table In MSSQL

In this article, we are going to create a C# Model Class From The Table In MSSQL Database.

We are going to create the Stored Procedure name which will take table name as input and give C# Model Class as output.

Generally, we are creating a model class with the same name as columns in the table, and we are looking at the table structure and then creating property accordingly. but using this we just have to pass the table name and types of class which we want. it will be useful for reducing programmer work for this kind of mapping thing.

following are steps for it.

1. Create Stored Procedure In MSSQL, as below

CREATE PROCEDURE GenerateModelClass
(  
     @TableName SYSNAME,  
     @ClassName VARCHAR(500)   
)  
AS  
BEGIN  
    DECLARE @Result VARCHAR(MAX)  
  
    SET @Result = @ClassName + @TableName + '  
{'  
  
SELECT @Result = @Result + '  
    public ' + ColumnType + NullSign + ' ' + ColumnName + ' { get; set; }'  
FROM  
(  
    SELECT   
        REPLACE(col.NAME, ' ', '_') ColumnName,  
        column_id ColumnId,  
        CASE typ.NAME   
            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 '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'  
            ELSE 'UNKNOWN_' + typ.NAME  
        END ColumnType,  
        CASE   
            WHEN col.is_nullable = 1 and typ.NAME in ('bigint', 'bit', 'date', 'datetime', 'datetime2', 'datetimeoffset', 'decimal', 'float', 'int', 'money', 'numeric', 'real', 'smalldatetime', 'smallint', 'smallmoney', 'time', 'tinyint', 'uniqueidentifier')   
            THEN '?'   
            ELSE ''   
        END NullSign  
    FROM SYS.COLUMNS col join sys.types typ on col.system_type_id = typ.system_type_id AND col.user_type_id = typ.user_type_id  
    where object_id = object_id(@TableName)  
) t  
ORDER BY ColumnId  
SET @Result = @Result  + '  
}'  
  
print @Result  
  
END

above store procedure will take table name and class type as parameters and it will return/print model class.

2. Execute Stored Procedure, as below

exec GenerateModelClass '[dbo].[TblExpense]', 'public class '

this way we can execute the stored procedure, in the parameter, we have passed the table name which class we have to generate, and in the second parameter, we have passed class type so it will append that text before our class.

Below are the outputs.

public class [dbo].[TblExpense]  
{  
    public int ExpenseId { get; set; }  
    public int UserId { get; set; }  
    public int ProjectId { get; set; }  
    public int ExpenseCategoryId { get; set; }  
    public DateTime ExpenseDate { get; set; }  
    public string Description { get; set; }  
    public decimal Amount { get; set; }  
    public int StatusId { get; set; }  
    public int InsertedBy { get; set; }  
    public DateTime InsertedDateTime { get; set; }  
    public int? UpdatedBy { get; set; }  
    public DateTime? UpdatedDateTime { get; set; }  
}

 

Hope you like it and find something useful which reduce our some small amount of time 🙂 Thank You.

Also, check Generate Dynamic XML File In .NET Core

Tabish Rangrej

Tabish Rangrej is an Experienced .NET Team Leader, software engineer, and Author with a demonstrated history of working in the IT industry. He has quite well experience in developing, communicating, managing, and writing in his field. He has strong skills and knowledge of ASP.NET C#, ASP.NET MVC, ASP.NET CORE, Angular, AngularJS, Web API, SQL, Entity Framework, JavaScript, Jquery, Different Integrations like Quickbooks, Stripe, Google APIs, Zoho, Orion, Xero, etc., Different versioning tools like TFS, SVN, GIT, etc. and Windows services. Strong engineering professional with a Master of Computer Applications - MCA focused on Computer Science from Veer Narmad South Gujarat University, Surat. Tabish is always ready to accept new challenges and learn new things, he would like to serve better for the community.

Recent Posts

Testing hk

Testing

2 years ago

Create and Used PIPE in angular

In this article, we have to show Create and Used PIPE in angular

2 years ago

Operation

Testing

2 years ago

Create and Used PIPE in angular

In this article, we have to show Create and Used PIPE in angular

2 years ago

Create and Used PIPE in angular

In this article, we have to show Create and Used PIPE in angular

2 years ago

TETS NEW

test

3 years ago