> 데이터 베이스 > MySQL 튜토리얼 > ORM 없이 데이터베이스 테이블에서 C# 클래스 엔터티를 생성하는 방법은 무엇입니까?

ORM 없이 데이터베이스 테이블에서 C# 클래스 엔터티를 생성하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-12-16 02:27:10
원래의
667명이 탐색했습니다.

How to Generate C# Class Entities from a Database Table Without an ORM?

데이터베이스 테이블에서 클래스 엔터티 생성

객체 관계형 사용을 생략하고 데이터베이스 테이블에서 필수 클래스 엔터티를 생성해야 한다고 가정해 보겠습니다. 매핑(ORM) 프레임워크. 목표는 주어진 데이터베이스 테이블의 구조와 유사한 간단한 클래스를 생성하는 것입니다.

다음 스키마가 있는 테이블을 고려하십시오.

+----+-------+----------------+
| ID | Name  |     Phone      |
+----+-------+----------------+
|  1 | Alice | (555) 555-5550 |
|  2 | Bob   | (555) 555-5551 |
|  3 | Cathy | (555) 555-5552 |
+----+-------+----------------+
로그인 후 복사

Person이라는 해당 클래스 엔터티를 생성하려면, 다음 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
로그인 후 복사

이 쿼리는 테이블의 열 이름, 데이터 유형 및 null 허용 여부 제약 조건을 매핑하여 클래스 엔터티를 동적으로 생성합니다. 클래스 속성에. 결과 Person 클래스는 다음과 같습니다.

public class Person 
{
    public string Name { get; set; }
    public string Phone { get; set; }
}
로그인 후 복사

네임스페이스 정의, 클래스 접근성 정의, 추가 속성 추가 등 SQL 쿼리를 수정하여 코드 생성을 사용자 정의할 수 있습니다.

위 내용은 ORM 없이 데이터베이스 테이블에서 C# 클래스 엔터티를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿