2015-04-22 45 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」)過濾數據。 –