2012-07-10 43 views
0

我很沮喪與EF代碼優先,因爲不支持的視圖映射,而不是表。 因此,我從ExecuteSqlCommand中取回了View Data Class。 但我不知道如何做到這一點? 任何幫助也許?實體框架ExecuteSqlCommand返回對象列表

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Ignore<m_box>(); 
    } 
protected override void Seed(eBagasiContext context) 
    { 
     context.Database.ExecuteSqlCommand(m_boxView.GetInitView(),new object[]{}); 
    } 
public static class m_boxView 
{ 
    public static string GetInitView() 
    { 
     return "CREATE VIEW m_box " + 
      "AS " + 
      "SELECT AgencyRef.Code AS ModuleCode, " +     
      "Price.Scale, "+ 
      "Price.Amount "+ 
      "FROM Price " + 
      "LEFT JOIN AgencyRef " + 
      "ON (Price.Code = AgencyRef.Code) " + 
      "WHERE LEFT(Price.Code,1)='C'"; 
    } 
} 
+0

你會得到什麼錯誤?或者運行這個的結果是什麼? – Rikon 2012-07-10 02:47:39

+0

它是模型不存在或因爲在modelcreate期間忽略命令,以避免創建視圖的表格 – user308551 2012-07-11 08:20:08

回答

0

如果你想映射視圖實體必須遵循以下幾個步驟:

  • 首先,它映射爲一個表(所以不要忽略m_box),並讓EF創建m_box表。
  • 在您的Seed方法中,您必須刪除創建的表並使用相同的名稱創建視圖。