簡體   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