ユーザーのテーブルに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