在C#中转换数据库中的数据



我有一个有100多个表的数据库。所有数据都保存为拉丁文字符。我想在我的应用程序中以西里尔字母的形式显示这些数据。我在我的应用程序、LINQ to SQL组件和MSSQL中使用.NET Framework 4.7.2。我试过/读过关于拦截器或包装器(拦截来自我的应用程序的每一个SQL调用,并调用音译字符串的自定义函数(,但我不明白。这有可能实现吗?

示例:

DB:Worker(Id,Name,Surname(

应用程序:

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;
}

最新更新