ホームページ >データベース >mysql チュートリアル >ORM を使用せずに SQL Server テーブルから C# クラスを生成する方法

ORM を使用せずに SQL Server テーブルから C# クラスを生成する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-12-21 02:46:09408ブラウズ

How to Generate C# Classes from SQL Server Tables Without an ORM?

SQL Server テーブル オブジェクトからのクラスの生成

問題:
を表す単純なクラスを生成するにはどうすればよいですか? SQL Server テーブル内のエンティティを、 ORM?

解決策:
次の SQL スクリプトを使用して、特定のテーブルのクラス定義を生成できます:

declare @TableName sysname = 'TableName';
declare @Result varchar(max) = 'public class ' + @TableName + ' {';

select @Result = @Result + '
    public ' + ColumnType + NullableSign + ' ' + 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 'double'
            when 'image' then 'byte[]'
            when 'int' then 'int'
            when 'money' then 'decimal'
            when 'nchar' then 'string'
            when 'ntext' then 'string'
            when 'numeric' then 'decimal'
            when 'nvarchar' then 'string'
            when 'real' then 'float'
            when 'smalldatetime' then 'DateTime'
            when 'smallint' then 'short'
            when 'smallmoney' then 'decimal'
            when 'text' then 'string'
            when 'time' then 'TimeSpan'
            when 'timestamp' then 'long'
            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 NullableSign
    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;

例:
列「Name」、「Phone」を持つ「person」という名前のテーブルの場合、生成されたクラスは次のようになります。 :

public class Person
{
    public string Name { get; set; }
    public string Phone { get; set; }
}

以上がORM を使用せずに SQL Server テーブルから C# クラスを生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。