我有几个对象,我希望我的用户可以上/下投票。 (类似于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字段。
答案 0 :(得分:2)
您可以使用基类,例如“VotableObject”,Deed,Activity和Idea将从该对象继承。
投票将连接到基类。