Supposons que vous vouliez créer une relation parent-enfant dans une table d'utilisateurs qui sera le type de zéro à un, nous souhaitons ajouter de la même manière le genre.Entity Framework Comportement différent de One-Zer-One
public class Gender
{
[Key]
public virtual int GenderID { get; set; }
public virtual string GenderName { get; set; }
public virtual ICollection<UserProfile> UserProfiles { get; set; }
}
et Userprofile
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; }
}
pour plus de clarté
modelBuilder.Entity<UserProfile>()
.HasOptional(c => c.UserParent);
// User -> Gender
modelBuilder.Entity<UserProfile>()
.HasOptional(g => g.Gender);
Tout semble bon, mais pour le moment je ne peux pas récupérer les données obtenues à partir du parent UserName.
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;
}
}
Commenté maintenant le chemin obtient le nom d'utilisateur parent. Question est pourquoi je ne peux pas récupérer Parent UserName - Je manque sth?
Tx aide
Il pouvait renommez aussi ParentUserId en UserParentId - de cette façon il suit la convention EF et il associera automatiquement les propriétés –
Fonctionne parfaitement TX! –