如何从一个POCO访问一个关联,并引用另一个POCO

时间:2012-05-21 13:55:00

标签: asp.net-mvc-3 entity-framework

对标题感到抱歉;我想不出更好的一个。

无论如何,我正在我的视图中访问相关的属性:

@Model.Company.CompanyName // No problems here...

该模型是映射到EF POCO的视图模型。 Model具有与Company表关联的多个属性。模型中只有一个属性与Company表中的PK共享相同的名称。所有其他属性引用相同的表:

public class MyModelClass 
{
    public int Id { get; set; }
    public int CompanyId { get; set; }
    public int AnotherCompanyId { get; set; } // References CompanyId
    public int AndAnotherCompanyId { get; set; } // References CompanyId

    public Company Company { get; set; }
 }

 public class Company
 { 
    public int CompanyId { get; set; }
    public string CompanyName { get; set; }
    public string Address { get; set; }
 }

我显然在这里遗漏了一些东西。

如何在我的模型中获取其他公司的名称?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

  

该模型是映射到EF POCO的视图模型

我认为你混淆了视图模型的概念。视图模型是专门为满足视图要求而设计的类。因此,如果您在视图中需要显示公司名称而不是公司ID,那么您的视图模型应直接包含CompanyName属性。或者直接包含名称的另一个视图模型(CompanyViewModel)的引用。然后,您的控制器操作负责查询您的域模型(EF实体)并将它们聚合到单个视图模型中,该模型将包含视图所需的所有必要信息。

以下是典型视图模型的外观:

public class MyViewModel
{
    public CompanyViewModel Company { get; set; }
    public CompanyViewModel AnotherCompany { get; set; }
    public CompanyViewModel AndAnotherCompany { get; set; }
}

public class CompanyViewModel
{
    public string Name { get; set; }
}

此视图模型中的数据来源并不重要。您可以从EF内容填充Company属性,从XML文件填充AnotherCompany属性,从WCF填充AndAnotherCompany。