ForeignKey 字符串 ToLower Entity Framework

ForeignKey String ToLower Entity Framework

我的外键有问题,您将在数据库中看到 table 我在 "EQU" 列中有以下值 "LA URBINA"。在我的模型中 属性 是:

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

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

问题是在table"Equipo"中关键代码是"La Urbina"而不是"LA URBINA"因此没有关系,有没有办法做比较不管价值是低还是高?请原谅我的英语不好,我希望你能理解我并能帮助我

您必须检查 "Collation" 您的数据库正在使用什么。

例如,"Latin1_General_100_CS_AI" - CS 表示您数据库中的字符串是 "case-sensitive",而 "LA URBINA" 和 "La Urbina" 等字符串是不同的。

如果是“"Latin1_General_100_CI_AI" - CI 表示数据库中的字符串是 "case-insensitive" 并且这两个字符串之间没有区别。

要更改数据库排序规则,请重新创建它(糟糕的情况)或右键单击 -> 选项 -> 排序规则。

以防万一这可以帮助某人我的解决方案是

模型中:

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;
}

在class装备中:

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