我有一个无法修改的 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/