Как моделировать голосование для разных типов объектов в вашей модели данных - PullRequest
1 голос
/ 02 июня 2011

У меня есть несколько объектов, которые я хочу, чтобы мои пользователи могли иметь возможность голосовать «за» или «против».(похоже на вопросы SO) Если бы это был только один тип объекта, я мог бы просто иметь отношение один ко многим, но у меня есть по крайней мере три типа объектов, которые требуют отслеживания голосования.

Я использую MVC3и EF CodeFirst.

Вот первый черновик

public class Deed
{
    public int DeedId { get; set; }
    [Required]
    public string Name { get; set; }
    public string Description { get; set; }
    public virtual ICollection<Vote> Votes { get; set; }
}
public class Vote
{
    public int VoteId { get; set; }
    public string UserId { get; set; }
    public int Value { get; set; }  // +1, -1
    public ItemType VoteType { get; set; }
    public int ItemId { get; set; }
}

public enum ItemType
{
    DEED,
    ACTIVITY,
    IDEA
}

С какой проблемой я столкнусь с этим?Альтернативой может быть сохранение таблицы голосов полностью не связанной с другими объектами и использование хранилища для заполнения поля VoteTotal для объектов Deed, Activity и Idea.

1 Ответ

2 голосов
/ 02 июня 2011

Вы можете использовать базовый класс, например, «VotableObject», Deed, Activity и Idea наследуют от этого объекта.

Голосование будет связано с базовым классом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...