繁体   English   中英

使用Entity Framework选择字符串替换

[英]String replace on select with Entity Framework

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

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

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

我读过关于实施的内容

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('ñ', '¥'); }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM