c# - 使用 Entity Framework 替换选择的字符串

标签 c# entity-framework replace character-encoding ef-model-first

我有一个无法修改的 SQL Server 数据源(我不是 dbo)。我首先使用 Entity Framework 6 模型进行查询。一切都很好,除了我必须选择客户名称并且只有两个字符的差异。

Datasource            Wanted
=============================
   ¤                    Ñ
   ¥                    ñ
  MU¤OZ               MUÑOZ
 Zu¥iga               Zuñiga

那么.. 有一种透明的方法吗?显然......您可以制作一个方法来替换并在查询客户表时调用。但我想要的是制作一个解决方案,适用于所有已经创建并将写入的查询。

我阅读了有关实现的内容

System.Data.Entity.Infrastructure.Interception.IDbCommandInterceptor

但不确定它是否正确。

查询示例及其结果;

var aCostumer = db.costumers.Where(n=>n.idCostumer==someId).Select(n=>new{n.idCostumer,n.firstName,n.lastName}).FirstOrDefault();

结果

idCostumer    firstName    lastName
===================================
   1             DAVID       MU¤OZ

但我希望查询结果是:

idCostumer    firstName    lastName
===================================
   1             DAVID       MUÑOZ

有人能给我指出正确的方向吗?提前致谢

最佳答案

您可以向您的 Customer 模型类添加一个属性,该属性执行替换并且不被映射或序列化。

这只是意味着将所有对“Name”的引用替换为“CorrectName”。

代码优先:

public class Customer
{
    // ...

    public string Name { get; set; }

    [NotMapped]
    public string CorrectName
    {
        get { return Name.Replace('¤', 'Ñ').Replace('¥', 'ñ'); }
        set { Name = value.Replace('Ñ', '¤').Replace('ñ', '¥'); }
    }

    // ...
}

模型优先:

// In a new file, so your changes don't get overwritten:
public partial class Customer
{
    public string CorrectName
    {
        get { return Name.Replace('¤', 'Ñ').Replace('¥', 'ñ'); }
        set { Name = value.Replace('Ñ', '¤').Replace('ñ', '¥'); }
    }
}

关于c# - 使用 Entity Framework 替换选择的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31945445/

相关文章:

c# - 在 C# 中进行深复制是否有一种不那么繁琐的方法?

c# - 获得早期绑定(bind)关系

c# - 如何使用 LinqToTwitter 获取推文的 HTML?

c# - OSX 上 Entity Framework 的单声道支持

c# - 从 Entity Framework 中的表值函数创建集合

c# - 查找并替换所有以 # 开头的单词,并将带标签的文本包装在 HTML 中

c# - 相对于 x86,x64 下 Winforms 程序的启动速度慢 10 倍

c# - 一对一变成一对多 Entity Framework 生成数据库优先

string - 将多个月份字符串替换为month-ints

javascript - 为什么在我尝试替换 @mention 时正则表达式不起作用?