2014-04-09 43 views
0

我想使用EntityFramework的Fluent配置來建模一個數據庫。我無法編輯或以其他方式控制數據庫架構。我試圖建模的實體有很多查找表 - 例如,一個屬性(它的名稱)有一個專門用於與id(它是語言)關聯的名稱的整個表。換句話說,它看起來有點像這樣在數據庫:將多個表平展到一個單一的類型

Entity 
    string[] Names 

Entity_Names 
    string Name 
    int LanguageId // 9 = English 

不過,我想凝結成

Entity 
    string Name // I only want the English name 

此使用SQL查詢,這將是非常簡單的 - 但如何我可以通過Entity Framework的流暢配置來做到這一點嗎?這些實例還有很多,但這是我能想到的最簡單的例子。

回答

1

如果您確實設法以這種方式平整模型,那麼它幾乎肯定會成爲數據的只讀視圖。 Entity Framework無法知道應該在另一個表中查找字符串屬性並用整數ID替換。

因此,如果您只能查看,那麼會留下兩個選項。編寫一個數據庫視圖,用該字符串替換ID併爲該視圖構建一個實體。

或者構建與模式模型兼容的實體並將數據投影到dto中。

第二種方法是我更喜歡的方法,因爲這意味着如果您確實需要CRUD,則仍然會有兼容的實體模型。

+0

這很好,因爲我正在閱讀的數據是不可變的。我決定我可以使用Discriminator列 - Map(m => m.Requires(x => x.LanguageID).HasValue(9))' –

相關問題