>데이터 베이스 >MySQL 튜토리얼 >SQL Server 테이블에서 프로그래밍 방식으로 C# 클래스를 생성하는 방법은 무엇입니까?

SQL Server 테이블에서 프로그래밍 방식으로 C# 클래스를 생성하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-24 08:09:16909검색

How to Programmatically Generate C# Classes from SQL Server Tables?

SQL Server의 데이터베이스 테이블에서 클래스를 생성하는 방법

사용하지 않고도 SQL Server 테이블 개체에서 클래스로 간단한 엔터티를 생성할 수 있습니다. ORM. 이 방법은 테이블 스키마에 맞는 클래스 구조를 생성하는 간단한 방법을 제공합니다.

단계:

  1. 테이블 이름 설정: 대상 테이블의 이름을 담을 변수 @TableName을 선언합니다.
  2. 클래스 생성 구조: 테이블 이름을 기반으로 시작 대괄호와 클래스 이름을 사용하여 @Result 문자열을 생성합니다.
  3. 열 반복: 열 정보 검색(이름, 데이터 유형, null 허용 여부) sys.columns 및 sys.types 시스템 테이블에서 대상의 object_id로 필터링됨 table.
  4. 클래스 속성 작성: 각 열에 대해 클래스 속성 선언을 @Result에 추가합니다. 속성에는 열 이름, 데이터 유형 및 열이 Null 값을 허용하는 경우 선택적 Null 허용 문자(?)가 포함됩니다. 데이터 유형은 호환성을 위해 C#에 해당하는 유형으로 변환됩니다.
  5. 클래스 코드 생성: 닫는 괄호로 클래스 구조를 완성하고 결과 코드를 인쇄합니다. 이는 지정된 테이블의 스키마를 미러링하는 C# 클래스를 제공합니다.

예:

"Name" 열이 있는 "Person"이라는 테이블을 생각해 보세요( 문자열) 및 "Phone"(null 가능) 문자열):

declare @TableName sysname = 'Person'
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 'varchar' then 'string'
            else 'UNKNOWN_' + typ.name
        end ColumnType,
        case 
            when col.is_nullable = 1 and typ.name = 'varchar' 
            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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.