如何映射数据库'代码'值转换成完整的字符串.Net mvc4 c#

本文关键字:mvc4 Net 字符串 转换 代码 何映射 映射 数据库 | 更新日期: 2023-09-27 18:19:09

我有一个外部数据库(只读权限),其中包含表示stringdata的代码字段。不幸的是,代码和解释并没有数字化。相反,我得到一堆文件,上面写着T=丰田,M=梅赛德斯,F=法拉利,等等。

我正在寻找一种方法将这些代码转换为完整的字符串并保持事物可维护。

[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"的数据注释将数据库值传递给资源文件,但随后我得到以下错误:

无法检索属性"Name",因为本地化失败。"MyProject.Resources.Car类型。BRAND'不是公共的,或者不包含名为'注册号'的公共静态字符串属性

似乎资源文件正在使用显示名称而不是从数据库检索的字段值(访问修饰符设置为public)


模型
    // ...
    [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)
    //...
}   

然而,我的问题的解决方案并不一定要使用资源文件,只要我能将代码映射到值并维护它们,我就会很高兴。提前感谢!

如何映射数据库'代码'值转换成完整的字符串.Net mvc4 c#

你已经回答了自己的问题。

Unfortunatetly, the codes and explanations are not digitalized -你需要把它们放在你的数据库中,在查询时只做连接。

更新:

另一种解决方案是使用映射创建一个静态Dictionary<string, string>,并在填充模型时进行查找。您可以重用BrandCode属性或定义一个新的