2012-07-10 41 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方法中,您必须删除创建的表并使用相同的名称创建视图。