2012-06-06 5 views
0

을 LazyLoad, 사용자 클래스 :asp.net MVC 사용자의 친구

public class User 
{ 
    [Key] 
    public Guid ID { get; set; } 

    [Required(ErrorMessage = "You must pick a user name")] 
    [DisplayName("User Name")] 
    public string Username { get; set; } 

    [Required] 
    public string FullName { get; set; } 

    [Required(ErrorMessage = "You give a valid email address")] 
    [DataType(DataType.EmailAddress)] 
    public string Email { get; set; } 
    [Required] 
    [DataType(DataType.Password)] 
    public string Password { get; set; }   
    [Required] 
    public DateTime CreateAt { get; set; } 

    public string Image { get; set; } 

    public bool RemeberMe { get; set; } 

    public bool Dummy { get; set; } 

    public virtual ICollection<UserFriend> Friends { get; set; } 
} 

UserFriend 등급 : - 사용자

public class UserFriend 
{ 
    [Key, Column(Order = 0), ForeignKey("User")] 
    public Guid UserId { get; set; } 
    public User User { get; set; } 

    [Key, Column(Order = 1), ForeignKey("Friend")] 
    public Guid FriendId { get; set; } 
    public User Friend { get; set; } 

    public DateTime DateCreated { get; set; } 

} 

사용자 저장소 사이의 관계를 유지 :

public class UserRepository : IUserRepository 
{ 
    public User GetUserByName(string userName) 
    { 
     return context.Users.FirstOrDefault(u => u.Username == userName); 
    } 
} 

나는이 방법을 사용하려고하면 :

var userRepo = new UserRepository(new DataContext()); 
User user = userRepo.GetUserByName(User.Identity.Name); 

문제 :. 나는 그것이 바로 내 게으른 부하가 작동하지있어 경우 user.Friends.first() 친구가 null 을 반환합니다.

도와주세요 ... 프로젝트에

링크 - 만약 당신이 친구 수집

또한
Friends = new HashSet<UserFriend>() 

의 새로운 인스턴스를 생성해야 사용자 클래스의 생성자에서 https://github.com/RanDahan/barker

+0

그러면 dbcontext와 관련된 구성을 보여줍니다. – Jorge

+0

user.identity.name에 값이 있습니까? 이것이 어디에서 불려지 는가? 행동 방식이나 다른 곳에서? – Brian

+0

예, 사용자 세부 정보가 작동합니다. 만약 내가 user.Friends.first() 입력합니다. 사용자가 내 세부 정보를 볼 수 있습니다 그냥 친구 param NULL입니다. –

답변

0

, 나는 UserFirends의 탐색 속성도 가상으로 선언되어 있어야한다고 생각합니다.

관련 문제