2015-04-22 90 views
0

我有一个ForeignKey的问题,您将在数据库表中看到我在列“EQU”中具有以下值“LA URBINA”。在我的模型的属性是:ForeignKey字符串ToLower实体框架

[ForeignKey("Equipo")] 
public string EQU { get; set; } 

private Equipo equipo; 
public virtual Equipo Equipo 
{ 
    get { return equipo; } 
    set { equipo = value; } 
} 

的问题是,在表中“EQUIPO”的键码为“香格里拉·乌尔维纳”而不是“LA URBINA”,因此不作关系,任何想法,使无论数值是低还是高?请原谅我的英文不好,我希望你能理解我,你可以帮我

+0

你使用什么数据库? –

+0

SQL Server Express –

+0

是的,我认为,但我不能触摸我的客户端数据库 –

回答

0

以防万一这能帮助别人我的解决方案是

模型

private string equ; 
[ForeignKey("Equipo")] 
public string EQU 
{ 
    get { return equ.Capitalize(); } 
    set { equ = value; } 
} 

private Equipo equipo; 
public virtual Equipo Equipo 
{ 
    get { return equipo; } 
    set { equipo = value; } 
} 

public static string Capitalize(this string str) 
{ 
    if (str != null || str == "") 
    { 
     str = str.ToLower(); 
     str = Regex.Replace(str, @"\b[a-z]", delegate(Match m) 
     { 
      return m.Value.ToUpper(); 
     }); 
    } 
    return str; 
} 

该类别设备:

private string codigo; 
[Key] 
[StringLength(20)] 
public string Codigo 
{ 
    get { return codigo.Capitalize(); } 
    set { codigo = value; } 
} 
0

你必须检查你的数据库正在使用的“整理”。

例如,“Latin1_General_100_CS_AI” - CS表示数据库中的字符串为“区分大小写”,而字符串“LA URBINA”和“La Urbina”不同。

如果是“” Latin1_General_100_CI_AI” - 的CI表示你的数据库字符串是‘不区分大小写’并没有这两个字符串之间无显着差异

为了更改数据库整理,重新。创建它(讨厌的情况下),或者右键 - >选项 - >整理

+0

是的,我认为,但我不能触摸我的客户端的数据库。我正在寻找一些覆盖OnModelCreating的东西,或者用linq –

+0

如果你想在当前上下文中加载数据之后过滤数据,你可以使用Linq to Objects。 您必须注意Linq to Entities和Linq to Objects。 如果您想区分大小写,请在上下文中查询您的实体,并使用.ToList()以加载数据。 ToList()之后,您可以使用Where(x => x.EQU ==“something”)过滤数据。 –