Maison >base de données >tutoriel mysql >Comment générer par programme des classes C# à partir de tables SQL Server ?

Comment générer par programme des classes C# à partir de tables SQL Server ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-24 08:09:16909parcourir

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

Comment générer une classe à partir d'une table de base de données dans SQL Server

La création d'entités simples en tant que classes à partir d'objets de table SQL Server est possible sans utiliser ORM. Cette méthode fournit un moyen simple de générer des structures de classe qui s'alignent sur le schéma de la table.

Étapes :

  1. Définir le nom de la table : Déclarez une variable @TableName pour contenir le nom de la table cible.
  2. Générer une classe Structure : Construisez une chaîne @Result avec le crochet de départ et le nom de la classe en fonction du nom de la table.
  3. Itérer sur les colonnes : Récupérez les informations sur la colonne (nom, type de données, nullabilité) à partir des tables système sys.columns et sys.types, filtrées par l'object_id de la table cible.
  4. Build Class Propriétés : Pour chaque colonne, ajoutez une déclaration de propriété de classe à @Result. Les propriétés incluent le nom de la colonne, le type de données et le caractère nullable facultatif (?) si la colonne autorise les valeurs nulles. Les types de données sont convertis en équivalents C# pour des raisons de compatibilité.
  5. Générer le code de classe : Complétez la structure de classe avec un crochet fermant et imprimez le code résultant. Cela fournit une classe C# qui reflète le schéma de la table spécifiée.

Exemple :

Considérons une table nommée "Personne" avec les colonnes "Nom" ( chaîne) et "Téléphone" (nullable chaîne):

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

Sortie :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn