0

最初にコードを使用しようとすると、ユーザークラスは次のようになります。

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

4

1 に答える 1

0

Userクラスのコンストラクターで、 Friendsコレクションの新しいインスタンスを作成する必要があります

Friends = new HashSet<UserFriend>()

また、UserFirendsのナビゲーションプロパティも仮想として宣言されている必要があると思います。

于 2012-06-16T08:23:53.763 に答える