2015-04-17 56 views
1

我正在将LINQ to SQL项目迁移到EF 6.1.3 Code First。我面临的问题是:实体框架6代码不区分大小写的字符串关联

我有2个表,事件与debtorNo列(varchar(20)不为空)和债务人与无列(varchar(20)非空)这是主键。架构无法更改,因为这些表由我无法控制的外部系统填充。数据库中的表之间没有外键,因为表被异步填充(再次无法控制该表)。 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关联不大。谷歌搜索后,我发现了两个解决方案:

  1. 创建并使用视图,将字符串转换为大写或小写。
  2. 操纵数据

这些解决方案是完美的工作(我可能会使用第二个),但一对夫妇几年前过时,简称EF 4.1代码第一次。

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

回答

3

我们正在使用EF 6.1,据我所知,没有办法做到这一点。我认为你仍然需要使用你列出的方法之一。我们使用的意见做在数据库级别转换

FWIW(字符串日期为例)

+0

我怕的就是这个。我希望EF团队在某些时候会修改代码,以便关联遵循db整理。在我的情况下,操作数据更简单,并确保在插入时将字段转换为大写字母(所有数据插入都通过我的Web服务)。但是,如果有更复杂的转换视图是要走的路。 – fanisch

相关问题