【发布时间】:2011-04-30 17:00:13
【问题描述】:
我对投票系统的实施感到困惑。我想知道投票赞成和反对帖子的计数,并保存投票赞成或反对的选民。我使用下面的模型。
public class Post : Entity
{
public string Title { get; set; }
public virtual User Owner { get; set; }
public virtual List<User> UpVoters { get; set; }
public virtual List<User> DownVoters { get; set; }
}
我觉得这个设计有点问题,因为如果我必须代表一个帖子的投票数和投票数,所以我认为我必须处理 2 个查询。如果我只需要计数,使用导航属性计数会导致性能问题.我说的对吗?
下面的第二种方法也让我感到困惑,因为 VoteUpCount 和 VoteDownCount 应该始终由开发人员手动处理。并且总是在选民改变投票时重新更新值,这看起来有点代码味道。
public class Post : Entity
{
public string Title { get; set; }
public virtual User Owner { get; set; }
public int VoteUpCount { get; set; }
public int VoteDownCount { get; set; }
public virtual List<User> UpVoters { get; set; }
public virtual List<User> DownVoters { get; set; }
}
你能建议我哪个更好吗?为什么更好?我还有其他选择吗?
最后一个帖子保留了 3 个用户导航属性,这让我觉得可能有问题。这段关系有什么问题吗??
【问题讨论】:
标签: c# .net entity-framework ef-code-first entity-framework-4.1