如何为数据模型中的不同对象类型建模

时间:2011-06-02 16:35:19

标签: c# asp.net-mvc-3 ef-code-first

我有几个对象,我希望我的用户可以上/下投票。 (类似于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
}

我会遇到什么样的麻烦?另一种方法是保持投票表与其他实体完全无关,并使用存储库填充契约,活动和Idea对象上的VoteTotal字段。

1 个答案:

答案 0 :(得分:2)

您可以使用基类,例如“VotableObject”,Deed,Activity和Idea将从该对象继承。

投票将连接到基类。