3

私は2つのクラスを持っています:

public class Profile
{
    public int ProfileID { get; set; }
    public string ProfileDescription { get; set; }
    public int DisplayOrder { get; set; }
    public virtual ICollection<Role> Roles { get; set; }
}

public class Role
{
    public int RoleID { get; set; }
    public string RoleDescription { get; set; }
    public int DisplayOrder { get; set; }
    public virtual ICollection<Profile> Profiles { get; set; }
}

DbContext を使用

public DbSet<Profile> Profiles { get; set; }
public DbSet<Role> Roles { get; set; }

プロファイルは親であり、ロールの一致するコレクションは子であり、いくつかの同様のクラスがあります。

必要な 2 つのプロパティだけを含む選択リストを作成したい

ProfileID, ProfileDescription

クエリで

SelectList(dbContext.Profiles.OrderBy(x => x.DisplayOrder).ToList(), "ProfileID", "ProfileDescription");

子の役割を戻すオーバーヘッドがない

これを一般的な方法で行う方法がわかりません(子なしで親を返す)

4

2 に答える 2

1

ナビゲーション プロパティを としてマークしたためvirtual、Entity Framework は、アクセスしたときに関連項目のみを取得します。そうしないと、Entity Framework はそれらにアクセスしないか、少なくともアクセスすべきではありません。注: エンティティをデバッグでウォッチ リストに追加すると、EF が関連項目を取得します。

Include(profile => profile.Roles)でクエリを実体化する前に追加すると、関連するアイテムが読み込まれますToList()

関連項目のロードの詳細については、MSDN のこの記事を参照してください。

于 2013-10-02T10:39:00.610 に答える