0

对不起标题;想不出更好的了。

无论如何,我正在访问我的视图中的关联属性,如下所示:

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

该模型是映射到 EF POCO 的视图模型。该模型有几个与公司表关联的属性。模型中只有一个属性与 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; }
 }

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

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

任何帮助是极大的赞赏。

4

1 回答 1

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。

于 2012-05-21T13:59:39.203 回答