0

ユーザーのテーブルに0対1のタイプの親子関係を作成するとし、同じ方法で性別をさらに追加します。

public class Gender
{
    [Key]
    public virtual int GenderID { get; set; }

    public virtual string GenderName { get; set; }

    public virtual ICollection<UserProfile> UserProfiles { get; set; }
}

およびユーザープロファイル

public class UserProfile
{

    [Key]
    public virtual int UserId { get; set; }

    public virtual UserProfile UserParent { get; set; }

    public virtual int? ParentUserId { get; set; }

    public virtual String UserName { get; set; }

    public virtual Gender Gender { get; set; }

    public virtual int? GenderID { get; set; }

  }

明確にするために

       modelBuilder.Entity<UserProfile>()
            .HasOptional(c => c.UserParent);

        // User -> Gender
        modelBuilder.Entity<UserProfile>()
            .HasOptional(g => g.Gender);

ここに画像の説明を入力してください

すべてが良好に見えますが、現時点では、親ユーザー名から取得したデータを取得できません。

   public IQueryable<UserProfileListViewModel> UserAllVM
    {
        get
        {
            var uservm = context.UserProfiles
                .Select(l => new UserProfileListViewModel
                { 
                    UserId = l.UserId,
                    UserName = l.UserName,
                    ParentUserId = l.ParentUserId ?? 0,
                    //ParentUserName = this.context.UserProfiles.Where(e => e.UserId == l.ParentUserId).FirstOrDefault().UserName ?? "",
                    ParentUserName = l.UserParent.UserName, **// this way make always null**
                    GenderID = l.GenderID ?? 0,
                    GenderName = l.Gender.GenderName ?? "",
                });

            return uservm;
        }
    }

親UserNameを取得する方法をコメントアウトしました。質問は、親ユーザー名を取得できない理由です-sthが恋しいですか?

ヘルプのためのTx

4

1 に答える 1

2

モデルの構成が不完全です。この質問への回答を参照してください

いずれかで[ForeignKey]属性(MSDN)を使用するか、( /と同じ)を使用できます。UserProfile.UserParentUserProfile.ParentUserIdUserProfile.GenderUserProfile.GenderId

または、FluentAPIを介して関係を定義できます。

modelBuilder.Entity<UserProfile>()
  .HasOptional(u => u.UserParent)
  .WithMany()
  .AsForeignKey(u => u.ParentUserId)

// User -> Gender
modelBuilder.Entity<UserProfile>()
  .HasOptional(u => u.Gender)
  .WithMany(g => g.UserProfiles)
  .AsForeignKey(u => u.GenderID);
于 2012-10-26T14:37:18.900 に答える