2012-03-19 65 views
1

我正在使用實體框架,代碼優先4.0,打擊現有舊數據庫以進行只讀訪問。該數據庫是標準化的,所以使用現有的數據庫和EF代碼優先,將查找表映射到實體

Table [Event] 
     [ID] 
     [Date_Entered] 
     [Event_Status_Key] 

Table [Event_Status] 
     [Event_Status_Key] 
     [Event_Status_Description] 

我的類看起來像

public class Event 
{ 
     public DateTime DateEntered { get; set; } 
     public string StatusDescription { get; set; } 
} 

這是一個WCF服務層的應用。

我的兩個問題:

  1. 有沒有簡單的方法來填充狀態的描述,而無需創建第二字典類型的對象?我看過這樣的問題:Entity Framework Mapping to Lookup table,但他們似乎將注意力集中在對象與對象之間,而我真的只想要一個原始對象。我更喜歡使用流暢的API而不是屬性。

  2. 加載數據時,是否在代碼層緩存了任何數據?或者每次檢查StatusDescription是否在[Event_Status]表上單獨調用?

編輯:可能的(更主觀的,這就是爲什麼我沒有把它)的第三個問題是如何接近應數據實體匹配數據庫。它始終是一對一的場地/桌子嗎?我在做什麼(將兩個表合併成一個數據實體obejct)不好?

謝謝。

回答

1

實體框架,希望你會映射表都作爲獨立的實體,並在查詢中使用的投影:

var query = from e in context.Events 
      select new WcfEvent // Your original Event class is just DTO 
       { 
        DateEntered = e.DateEntered, 
        StatusDescription = e.EventStatus.EventStatusDescription 
       }; 

這個例子正確地預計您的EventEvent_Status表的一個一對一的映射。

如果您需要任何形式的緩存,您將不得不自行實施。預測結果甚至沒有被上下文跟蹤。

相關問題