我的需求是基于数据库表中的值创建一个枚举。我正在使用ADO.NET Entity Framework模型(.edmx文件),你们当中有谁能帮帮我。
我的需求是基于数据库表中的值创建一个枚举。我正在使用ADO.NET Entity Framework模型(.edmx文件),你们当中有谁能帮帮我。
<#@ template language="C#" hostspecific="True" debug="True" #>
<#@ output extension="cs" #>
<#@ assembly name="System.Data" #>
<#@ import namespace="System.Data" #>
<#@ import namespace="System.Data.SqlClient" #>
<#
SqlConnection sqlConn = new SqlConnection(@"Data Source=XXXX;Initial Catalog=XXXX; Integrated Security=True");
sqlConn.Open();
#>
namespace AppropriateNamespace
{
public enum YourEnumName
{
<#
string sql = string.Format("SELECT Id, Name FROM YourTable ORDER BY Id");
SqlCommand sqlComm = new SqlCommand(sql, sqlConn);
IDataReader reader = sqlComm.ExecuteReader();
System.Text.StringBuilder sb = new System.Text.StringBuilder();
while (reader.Read())
{
sb.Append(FixName(reader["Name"].ToString()) + " = " + reader["Id"] + "," + Environment.NewLine + "\t\t");
}
reader.Close();
sqlComm.Dispose();
#>
<#= sb.ToString() #>
}
}
试着改进一下。与其将内容写入StringBuilder,不如直接将每个reader.Read()的结果输出到输出中。此外,我已经包含了一个还不存在的FixName方法,但你可能需要它来去除空格或非法字符。
enum
不会被代码分析审查;MultiWordValue
);总之,这篇博客文章中的所有内容都有很好的文档说明。