0

我不知道如何定义这种关系。我有用户和徽章,用户可以收集许多徽章,他们也可以多次拥有某个徽章。(就像 Stackoverflow 一样)。

如何定义这个 numberOfTimesEarntBadge 计数?

我试过简单地再次访问 user.badges.add(badge) ,但它没有插入数据库。

目前,徽章(在用户类内部)定义为:

public virtual ICollection<Badge> Badges { get; set; }  

谢谢!

4

1 回答 1

1

您需要一个关系实体,例如 UserBadge,因此导航属性将是 ICollection UserBadges

UserBadge 将有一个用户和徽章的导航属性,以及一个 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()
};
于 2013-03-27T04:05:25.583 回答