2011-06-03 2 views
2

Existe-t-il un moyen de créer une énumération, une collection ou quelque chose de similaire à une table de base de données, donc chaque fois que j'ajoute une ligne de base de données? Et fortement typé. Désolé, je devais jeter ça.C# Enums et tables de base de données

Répondre

1

Vous pouvez utiliser la génération de code qui génère des énumérations à partir de tables de recherche spécifiées.

7

T4 Templates, en voici un que j'ai écrit ce matin pour construire une classe et enumer chaque enregistrement dans un tableau.

<#@ template debug="false" hostspecific="true" language="C#" #> 
<#@ output extension=".cs" #> 
<#@ template language="C#v3.5" #> 
<#@ output extension="CS" #> 
<#@ assembly name="System.Data.dll" #> 
<#@ assembly name="System.Xml.dll" #> 
<#@ import namespace="System.Data" #> 
<#@ import namespace="System.Data.SqlClient" #> 
<# 
    string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=Portal;User Id=sa;Password=33321a;"; 
    DataTable tables = new DataTable("Tables"); 
    using (SqlConnection connection = new SqlConnection(connectionString)) 
    { 
    SqlCommand command = connection.CreateCommand(); 
    command.CommandText = "select * from Rights order by name"; 
    connection.Open(); 
    tables.Load(command.ExecuteReader(CommandBehavior.CloseConnection)); 
    } 
    #> 


namespace <#Write(System.Runtime.Remoting.Messaging.CallContext.LogicalGetData("NamespaceHint").ToString());#> 
{ 
    public partial class RightsList 
    { 
    <# foreach (DataRow row in tables.Rows){ 
     string name = row["Name"].ToString(); 
     WriteLine("public string "+name+" { get; set; }"); 
     }#> 

    } 

     public enum Rights 
    { 
    <# foreach (DataRow row in tables.Rows){ 
     string name = row["Name"].ToString(); 
     WriteLine(name+", "); 
     }#> 

    }  

}