Я запутался по поводу внедрения системы голосования. Я хочу знать, голосовать за и против подсчета постов, а также спасать избирателей, которые проголосовали за или против. Я использую модель ниже.
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 свойства навигации пользователя, и это заставляет меня чувствовать, что что-то может быть не так. Что-то не так в этих отношениях ??