[英]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.