Перечисления C # и таблицы базы данных - PullRequest
2 голосов
/ 04 июня 2011

Есть ли способ создать Enum, Collection или что-то подобное, что коррелирует с таблицей базы данных, поэтому каждый раз, когда я добавляю строку базы данных, я бы не обновлял свои Enum в базе кода? ... И строго типизировал.Извините, я должен был выбросить это туда.

Ответы [ 2 ]

7 голосов
/ 04 июня 2011

Шаблоны T4, вот один, который я написал этим утром, который создает класс и перечисление из каждой записи в таблице.

<#@ 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+", ");
        }#> 

     }    

}
1 голос
/ 04 июня 2011

Вы можете использовать генерацию кода, которая генерирует перечисления из указанных таблиц поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...