Как моделировать голосование для разных типов объектов в вашей модели данных

У меня есть несколько объектов, которые я хочу, чтобы мои пользователи могли иметь возможность голосовать "за" и "против". (похоже на вопросы 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 ответ

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

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

Другие вопросы по тегам