C# 将表中的数据映射到枚举XSD或CLR对象

C# 将表中的数据映射到枚举XSD或CLR对象,c#,asp.net,configuration,mapping,clr,C#,Asp.net,Configuration,Mapping,Clr,我目前正在使用一个标准的4.0WebForms应用程序(没有动态数据),我想尝试使我的网站配置尽可能动态 我有一个数据库表,其中每一行代表一种文件类型。我希望创建一个站点配置足够动态的流程,以便根据此表的更改处理和吸收对其配置的更改 目前,我在web.config文件的configsection中有一个条目集合,它表示一个文件类型集合。因此,如果我想处理PDF文件,我可能会在文件类型部分使用类似于的内容 每个键在我的数据库中都有一个条目,我使用一个枚举将一个友好的名称/CLR对象映射到数据库值(

我目前正在使用一个标准的4.0WebForms应用程序(没有动态数据),我想尝试使我的网站配置尽可能动态

我有一个数据库表,其中每一行代表一种文件类型。我希望创建一个站点配置足够动态的流程,以便根据此表的更改处理和吸收对其配置的更改

目前,我在web.config文件的configsection中有一个条目集合,它表示一个文件类型集合。因此,如果我想处理PDF文件,我可能会在文件类型部分使用类似于
的内容

每个键在我的数据库中都有一个条目,我使用一个枚举将一个友好的名称/CLR对象映射到数据库值(整数)。我喜欢这样的方式,我可以在标记属性中轻松地使用它,例如,
,并且我可以使用数据库数据和web.config中的附加属性的组合来允许Intellisense真正完成它的工作

问题是,这个枚举目前是硬编码的,我不知道有什么好方法可以使它动态地处理将来的添加或删除。目前,如果我想添加一个新的文件类型,我必须向数据库中添加一个新行,在web.config中为它添加一个条目,然后用新的ID更新枚举。这对我来说没关系,但这有点手动,而且我不能说我们的支持是否能够遵循该过程

我认为对我来说,在概念上造成障碍的原因是,我没有将DB模式转换为CLR模式,而是试图将模式对象实例的组合转换为一种类型

我使用的是实体框架,所以利用实体框架中的某些东西是没有问题的

我曾考虑过使用xsd.exe,但由于我不想安排它运行或调用它来刷新模式,让其他开发人员完成这个过程可能比手动更新枚举更麻烦。然而,如果有什么我可以做的路线,我非常愿意去看看

澄清一下,我并不是真的很想在web.config中使用它,我只是这样做的,让它以一种硬编码的方式很好地工作

理想情况下,我想做的是让来自数据库的数据以神奇的方式自动解析和/或识别,这样我就可以将其名称或简单的英语表示形式放在标记属性中。我认为这很可能看起来像客户机引用的某个xml模式文件


如果你有什么建议,我将非常感激。谢谢大家。

我最终离开了web.config。我本可以自己进行转换,但我决定改用T4模板。我将web.config中存储的数据移动到数据库中的字段中,然后使用T4模板查询数据库,获取所有行并为它们生成枚举值。然后,我创建了隐式操作符来将枚举类型转换为实体,反之亦然,例如
get{returncontext.Where(myVar=>myVar.myKey==(int)myEnumVal);

所以现在我的支持不必打开代码,他们只需在数据库中添加一行代码,设计时模板就会生成新的值