首頁 >資料庫 >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. 迭代列: 擷取欄位資訊(名稱、資料型別、可為空性)來自sys.columns 和sys.types 系統表,依目標的object_id 篩選table.
  4. 建置類別屬性:對於每一列,將類別屬性宣告附加到@Result。屬性包括列名、資料型別和可選的可為空字元 (?)(如果列允許空值)。資料類型將轉換為 C# 等效項以實現相容性。
  5. 產生類別代碼: 使用右括號完成類別結構並列印結果程式碼。這提供了一個鏡像指定表架構的 C# 類別。

範例:

考慮一個名為「Person」且列為「Name」的表(字串)和「電話」(可為空字串):

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