我的项目中有以下场景,我开始对它提出一些问题。
在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; }
}
答案 0 :(得分:1)
您所做的一切似乎都是基于我从您的代码中收集的假设:用户有疑问,也可以关注属于其他用户的问题。如果这是正确的,那么看起来你只是在努力解决这些关系如何发挥作用。
从User
开始,查询Questions
将返回属于该User
个实例的所有问题。但是,查询QuestionFollows
将返回User
选择关注的所有问题,这些问题是否属于User
实例。换句话说,这些是两个功能不同的数据集,所以它不是关于哪个更具性能;它是关于哪个返回你实际需要的数据。
User
和QuestionFollows
之间的关系也不是多余的,因为您再次追踪这种关系的根本不同方面。在QuestionFollow
中,User
是跟随问题的实体,Question
是正在关注的实体。 Question
实体可能会有一个完全不同的User
,因为User
实体是拥有问题的实体。