2015-04-17 60 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

相關問題