字符串替换为实体框架选择
本文关键字:框架 选择 实体 替换 字符串 | 更新日期: 2023-09-27 18:07:17
我有一个SQL Server数据源不能修改(我不是dbo)。我使用实体框架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('ñ', '¥'); }
}
}