ホームページ >データベース >mysql チュートリアル >SQL Server データベース テーブルから C# エンティティ クラスを生成するにはどうすればよいですか?

SQL Server データベース テーブルから C# エンティティ クラスを生成するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-17 08:15:24575ブラウズ

How can I generate C# entity classes from SQL Server database tables?

データベース テーブルからのエンティティ クラスの生成

SQL Server テーブル オブジェクトからエンティティ クラスを直接作成することは、コードでデータベース オブジェクトを表す便利な方法です。その方法は次のとおりです。

サンプル テーブル:

+----+-------+----------------+
| ID | Name  |     Phone      |
+----+-------+----------------+
| 1 | Alice | (555) 555-5550 |
| 2 | Bob   | (555) 555-5551 |
| 3 | Cathy | (555) 555-5552 |
+----+-------+----------------+

エンティティ クラスの生成:

TableName テーブルのエンティティ クラスを指定するには、次の T-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

このコードは、指定した構文でエンティティ クラスを生成します:

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

以上がSQL Server データベース テーブルから C# エンティティ クラスを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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