데이터베이스 테이블에서 클래스 엔터티 생성
객체 관계형 사용을 생략하고 데이터베이스 테이블에서 필수 클래스 엔터티를 생성해야 한다고 가정해 보겠습니다. 매핑(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!