我不知道如何定义这种关系。我有用户和徽章,用户可以收集许多徽章,他们也可以多次拥有一定的徽章。 (就像Stackoverflow一样)。
如何定义此numberOfTimesEarntBadge计数?
我尝试过再次使用user.badges.add(badge),但它没有插入数据库。
目前,徽章定义为(在用户类内):
public virtual ICollection<Badge> Badges { get; set; }
谢谢!
答案 0 :(得分:1)
你需要一个关系实体,例如UserBadge,因此nav属性将是ICollection UserBadges
UserBadge将拥有一个导航属性给User和Badge,以及一个PK ID字段。
要获得徽章计数,您可以按徽章对用户的UserBadges ICollection进行分组,然后计算每个组:
var badgeCountQuery =
for ub in userEntity.UserBadges
group ub by ub.Badge into g
select new
{
Badge = g.Key,
BadgeCount = g.Count()
};