我正在使用Entity Framework将数据保存到数据库中。现在我有一个班级:
public class User
{
public int Id { get; set; }
public virtual ICollection<User> Friends { get; set; }
public virtual User BestFriend { get; set; }
public User()
{
Friends = new HashSet<User>();
}
}
我用
加载用户User user;
using(var context = DatabaseContext)
{
user = context.Users.Select(x => x.Id == 1);
}
Friends
和BestFriend
属性为null
。然而,这是有效的:
User user;
using(var context = DatabaseContext)
{
user = context.Users.Include(x => x.BestFriend).Include(x => x.Friends).Select(x => x.Id == 1);
}
这让我遇到了问题,例如: user.BestFriend.BestFriend
为空。我也可以包含这个属性,但这会导致更多问题更深层次。
如何知道延迟加载和急切加载确实存在,但我不知道如何使用这里的任何一个对我有利。
由于