InverseProperty属性有多懒

时间:2017-08-24 22:49:08

标签: sql-server entity-framework asp.net-core

我有2个实体:PostComment

我有一个Post个实例,我希望收到前10条评论。

Post

public class Post
{
    public int Id { get; set; }

    [InverseProperty("Post")]
    public virtual ICollection<Comment> Comments { get; set; }
}

Comment

public class Comment
{
    public int Id { get; set; }

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

    public int PostId { get; set; }
    [ForeignKey("PostId")]
    public virtual Post Post { get; set; }
}

如果我这样做,会有多少评论来自数据库?全部还是仅仅10?

var comments = post.Comments.Take(10).ToList();

这样做效率更高吗?

var comments = Db.Comments.Where(x => x.Post == post).Take(10).ToList();

1 个答案:

答案 0 :(得分:0)

如果您使用.Include(),则具有InverseProperty属性的媒体资源将包含分配给此Comments的所有Post

因此,如果您只想获得前10条评论,最好不要使用它。