2011-09-20 142 views
2

我們使用Miscrosoft的代碼優先實體框架(4.1)映射到現有的數據庫。我們希望能夠更改一些與數據表映射的屬性的數據類型和值。例如,表格中有一列確定記錄是否最新。它是一個整數列,值爲1或2.我們不希望更改數據庫,因爲有很多不同的應用程序從該列中獲取數據,但是對於我們的代碼來說,將類映射到該類table有一個bool屬性,它是IsActive,如果表列是1,則返回true,否則返回false。有沒有辦法配置EnityFrame的工作,以便我們可以直接定義這個映射,而不需要在實際類中有兩個屬性,一個是整數列(映射到數據庫),一個是從另一個布爾值計算出來的布爾屬性?我可以將布爾屬性直接映射到整數列嗎?Code First Entity Framework

回答

1

簡單的答案是否定的。 EF在這個領域完全是愚蠢的,它完全缺少簡單的類型映射。

這意味着您不能更改標量屬性的類型,並且您的類的確必須使用值1和2來處理該int屬性,以定義IsActive

的解決方法可以是:

public class YourClass 
{ 
    public int IsActiveValue { get; set; } 
    [NotMapped] 
    public bool IsActive 
    { 
     get { return IsActiveValue == 2; } 
     set { IsActiveValue = value ? 2 : 1; } 
    } 
} 

這種解決方法也有一些缺點

  • 您必須具有兩個屬性和IsActvieValue必須是上下文
  • 可見你不能使用IsActive LINQ到-entities查詢
相關問題