在 C# 中从数据库中音译数据

Transliterate data from database in C#

我有一个包含 100 多个表的数据库。所有数据都保存为拉丁字符。我想在我的应用程序中将这些数据显示为西里尔字符。我在我的应用程序、LINQ to SQL 组件和 MSSQL 中使用 .NET Framework 4.7.2。我有 tried/read 关于拦截器或包装器(拦截来自我的应用程序的每个 SQL 调用并调用音译字符串的自定义函数)但我无法弄清楚。这甚至有可能实现吗?

示例:

数据库:工人(身份证、姓名、姓氏)

应用程序:

public Worker GetWorker(int workerId){
    using (var db = new DB())
    {
        var worker = db.Workers.SingleOrDefault(m => m.Id == workerId);

        return Transliterate(worker);
    }
}

private Worker Transliterate(Worker worker)
{
    //dictionary that replaces character for character and returns worker
}

此示例有效,但我必须在我的应用程序中手动编写这段代码,这并不能解决我的问题。所以我想只写一次那段代码(比如在拦截器或类似的东西中)。有什么想法吗?

我发现我总是返回 ToList() 方法,所以我创建了一个自定义静态 toList 方法并添加了音译。

public static List<T> ToListCustom<T>(this IEnumerable<T> query)
{
    var dataList = query.ToList();

    foreach (var ent in dataList)
    {
        var properties = ent.GetType().GetProperties().Where(v => v.PropertyType.Name == "String");
        foreach (var pop in properties)
        {
            var sValue = pop.GetValue(ent, null).ToString();
            pop.SetValue(ent, MyTransliterationConverter(sValue), null);
        }
    }

    return dataList;
}