2012-06-06 64 views
0

如果我首先嚐試使用代碼, 用戶類:asp.net MVC用戶朋友LazyLoad

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()。Friend返回null 如果我得到它,我的懶惰負載無法正常工作。

幫助,請...

鏈接到項目 - https://github.com/RanDahan/barker

+0

然後向我們展示與dbcontext相關的配置 – Jorge

+0

user.identity.name是否有值?這被稱爲?在行動方法或其他地方? – Brian

+0

是的,用戶詳細信息起作用。如果我鍵入user.Friends.first()。用戶我可以看到我的細節只是朋友參數是NULL。 –

回答

0

用戶類的構造器,你應該創建朋友收集

Friends = new HashSet<UserFriend>() 

另外的新實例,我認爲導航屬性UserFirends也應該被聲明爲虛擬。

相關問題