回答

2

我建議包起來或延長髮電類型添加這種功能...

實體框架將生成基本上與數據庫表中的數據相匹配的對象,因此如果您有一個名爲「Contacts」的表,您將獲得一個名爲「Contacts」的對象,I th墨(雖然我可能是錯的)的類現在,當你定義爲局部的,因此產生類似...

public partial class Contact { 
    string BoolReally { 
    get; set; 
    }; 
} 

你再加入這樣一個新的屬性...

public partial class Contact { 
    bool MyBool get { 
    return (legacyValue == "T") ? true : false; 
    } 
} 

聲明一個Contact實例只是捕捉「MyBool」中的值。

...

這就是延伸結束了會是這樣的......

public class MyContact { 
    public Contact Contact; 
    public bool MyBool { 
     get { 
      return Contact.BoolAsString; 
     } 
    } 
} 

類似的事情......只是需要消耗對象略有不同:)

+2

下行的,這是該'MyBool'屬性不能在LINQ查詢使用,因爲EF不能將這樣的查詢翻譯成SQL。 – Steven

+0

雖然在舊字符串屬性的linq查詢中沒有任何東西阻止您使用相同的邏輯。儘管這是一個討厭的解決方法。我的理想是在數據庫中創建一個計算字段,這樣你就可以將一個列轉換爲可以在linq中使用的POCO /實體。 – War

+0

或者只是用一些SQL更新(表中的1,將數據複製到一個比特列中)將列轉換爲 – War

5

這是不可能的。您將有一個字符串屬性映射到數據庫表列,然後使用一個沒有映射布爾屬性:

public string MyStringProperty { get; set; } 

[NotMapped] 
public bool MyBoolProperty 
{ 
    get { return MyStringProperty == "T"; } 
    set { MyStringProperty = value ? "T" : "F"; } 
} 
+2

該死的,我真的希望保持模型POCO對映射到數據庫的無知將是非常好的,如果有一種方法可以在流利的api中執行此操作 –

+3

@Chris:告訴ADO.NET團隊。他們仍然忽略簡單類型映射的需求。 –

+0

你注意到了 –

相關問題