我有一个外部数据库(仅限阅读权限),其中包含表示字符串数据的代码的字段。不幸的是,代码和解释没有数字化。相反,我有一堆文件说明 T=Toyota、M=Mercedes、F=Ferrari 等。
我正在寻找一种将这些代码转换为完整字符串并保持可维护性的方法。
[Desired result] [Current result]
-Regnumber -Brand -Regnumber -Brand
ABC001 Toyota ABC001 T
FGH783 Ferrari FGH783 F
LKJ345 Mercedes LKJ345M M
我考虑过使用枚举,但这似乎需要大量的工作来声明(500 多个值),所以我在考虑使用资源文件(XML 应该易于维护),但我愿意接受建议。
我的计划是为每个包含代码的表创建一个单独的资源文件:
./Resources/Cars/BRAND.resx
./Resources/House/BUILDINGTYPE.resx
./Resources/House/COLOR.resx
./Resources/Flowers/NAME.resx
这样,将来很容易找到和更改内容。但我想知道从资源文件接收值的好地方(模型、视图、其他)是什么?
此外,我尝试使用DataAnnotations但我可能完全错过了这一点。我的印象是,只需添加显示类型为“ResourceType = foo”的数据注释,就可以将数据库值传递给资源文件,但随后出现以下错误:
无法检索属性“名称”,因为本地化失败。类型“MyProject.Resources.Car.BRAND”不是公共的或不包含名为“registration number”的公共静态字符串属性
似乎资源文件正在使用显示名称而不是从数据库中检索的字段值(访问修饰符设置为公共)
模型
// ...
[Key]
public int ID { get; set; }
[Display(Name="registration number")]
public string registrationNr { get; set; }
[Display(Name="Brand", ResourceType = typeof(Resources.Car.BRAND))]
public string BrandCode { get; set; }
//...
看法
foreach(modelItem in Model.Car)
{
//...
@Html.DisplayNameFor(modelItem => modelItem.BrandCode)
@Html.DisplayFor(modelItem => modelItem.BrandCode)
//...
}
但是,我的问题的解决方案不必使用资源文件,只要我可以将代码映射到值并维护它们,我就会成为一个快乐的人。提前致谢!