>假设我有一个简单的音频播放器应用程序,其中包含两个实体,User
和Tracks
。有固定数量的曲目,用户可以选择收听它们。我想跟踪每个用户对每个曲目的播放计数。在实体框架中表示这一点的最简单方法是什么?我有一些想法,但没有一个看起来特别优雅。
-
每个用户都可以有一个带有字典的属性,其中键是跟踪 ID,值是整数。但是,如果添加了曲目,它们都必须进行修改。我得喜欢...序列化为 JSON 以存储在数据库中,这很糟糕。
-
每次播放曲目时,都会将
Listen
实体添加到Listens
表中,并且可以从中重建每个用户的曲目总数。这就是许多星级评定系统的工作方式。但这对我来说似乎是浪费,因为我真正想跟踪的只是每个用户的几十个整数。重建我想要的数据感觉是不必要的
多 对多的关系似乎不太适合这个问题。每个曲目将有许多用户(已收听),但不计算次数。每个用户都会有很多曲目(他们听说过),但现在再次计数。
有没有更清洁的方法可以得到这个?
你概述的第二个选项是我的偏好。 它可以正确地模拟您在数据库级别描述的关系,并且在代码中也应该更容易理解。
如果您真的不喜欢每次收听曲目时添加记录的想法,则可以在每个用户的第一次收听时添加记录,并使其包含一个在连续收听时递增的计数器。 但是,我认为这更糟,因为以后很难扩展;例如,如果您还想跟踪收听日期。 如果在并发情况下增加计数器,您还必须格外小心。