0

タイトルについて申し訳ありません。より良いものを考えることができませんでした。

いずれにせよ、私は自分のビューで関連するプロパティに次のようにアクセスしています:

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

モデルは、EF POCO にマップされたビューモデルです。モデルには、Company テーブルに関連付けられたいくつかのプロパティがあります。モデル内のプロパティの 1 つだけが、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; }
}

このビュー モデルでデータがどこから来るかは重要ではありません。Company プロパティを EF のものから設定し、AnotherCompany プロパティを XML ファイルから設定し、AndAnotherCompany を WCF から設定することができます。

于 2012-05-21T13:59:39.203 に答える