实体框架6 Code First不区分大小写的字符串关联

时间:2015-04-17 11:51:15

标签: c# entity-framework entity-framework-6

我正在将LINQ to SQL项目迁移到EF 6.1.3 Code First。我面临的问题是:

我有2个表,有debtorNo列的事件(varchar(20)不为null)和Debtors有No列(varchar(20)not null)这是主键。架构无法更改,因为这些表由我无法控制的外部系统填充。数据库中的表之间没有外键,因为表是异步填充的(再次无法控制表)。 db排序规则不区分大小写。

在LINQ to SQL中,我声明了导航表之间的关联。在EF中,我在DbContext的OnModelCreating方法中声明了与以下代码相同的关联:

modelBuilder.Entity<Incident>()
            .HasRequired(e => e.Debtor)
            .WithMany(e => e.Incidents)
            .HasForeignKey(e => e.DebtorNo);

虽然LINQ to SQL关联不区分大小写,但EF关联却不是。在谷歌搜索问题后,我找到了2个解决方案:

  1. 创建并使用将字符串转换为大写或小写的视图。
  2. 操纵数据
  3. 这些解决方案非常有效(我可能会使用第二种解决方案),但是几年前已经过时并提到了EF 4.1 Code First。

    所以我的问题是有没有办法在最新版本的EF Code First中声明不区分大小写的字符串关联?

1 个答案:

答案 0 :(得分:3)

我们正在使用EF 6.1,据我所知,没有办法做到这一点。我想你仍然需要使用你列出的方法之一。

FWIW我们使用视图在数据库级别进行转换(例如字符串到日期)