0

我的项目中有以下场景,我开始遇到一些关于它的问题。

User课堂上,QuestionFollows直接查询会比查询更好(就性能而言)Questions然后QuestionFollows

User另一个问题……和QuestionFollow必要/冗余之间的关系是什么?

领域

public class User
{
    public long   UserID { get; set; }
    public string Name   { get; set; }

    public virtual ICollection<Question>       Questions       { get; set; }
    public virtual ICollection<QuestionFollow> QuestionFollows { get; set; }
}

public class Question
{
    public long   QuestionID  { get; set; }
    public long   UserID      { get; set; }
    public string Description { get; set; }
    public User   User        { get; set; }

    public virtual ICollection<QuestionFollow> QuestionFollows { get; set; }
}

public class QuestionFollow
{
    public long     QuestionFollowID { get; set; }
    public long     QuestionID       { get; set; }
    public long     UserID           { get; set; }
    public DateTime Date             { get; set; }
    public Question Question         { get; set; }
    public User     User             { get; set; }
}        

4

1 回答 1

1

根据我从您的代码中收集的假设,您所做的一切似乎都是正确的:用户有问题,也可以关注属于其他用户的问题。如果这是正确的,那么您似乎只是在为这些关系的发展方式而苦苦挣扎。

From User,查询Questions将返回属于该User实例的所有问题。QuestionFollows然而,查询将返回所有User选择跟随的问题,无论这些问题是否属于该User实例。换句话说,这是两个功能不同的数据集,所以不在于哪个更高效;它是关于返回您实际需要的数据的。

User和之间的关系QuestionFollows也不是多余的,因为您再次跟踪关系的一个根本不同的方面。inQuestionFollow关注问题的User实体,而 是被关注的实体。该实体可能有一个完全不同的附属物,因为该实体是拥有问题的人。QuestionQuestionUserUser

于 2013-10-23T19:26:38.173 回答