如何在实体框架中表示“播放计数”关系-代码优先

时间:2019-04-06 23:04:36

标签: .net entity-framework

说我有一个简单的音频播放器应用,其中包含两个实体UserTracks。曲目数量固定,用户可以选择收听。我想跟踪每个曲目的每个用户的播放次数。在实体框架中最简单的表示方式是什么?我有一些想法,但似乎都没有那么优雅。

  • 每个用户都可以拥有带有字典的属性,其中的键是轨道ID,而值是ints。但是,如果添加了曲目,则必须全部修改它们。而且我不得不...序列化为json以存储在数据库中,这很麻烦。

  • 可能存在一个Listen实体,该实体每次播放曲目时都会添加到Listens表中,并且可以从中重建每个用户的曲目总数。这就是许多星级评定系统的工作方式。但这对我来说似乎是浪费,当我真正想要跟踪的只是每个用户几十个整数时。重建我想要的数据感觉就像不必要的

  • 多对多关系似乎不太适合这个问题。每个曲目将有许多用户(已收听),但不计多少次。而且每个用户都有很多(他们听过的)曲目,但现在又可以计数了。

有没有更干净的方法来获得这个?

1 个答案:

答案 0 :(得分:1)

您概述的第二个选项是我的偏好。它可以正确地建模您在数据库级别描述的关系,并且在代码中也应该更易于理解。

如果您真的不喜欢在每次收听曲目时添加记录的想法,则可以在每个用户的第一次收听中添加记录,并让它包含一个计数器,该计数器在连续的收听中递增。但是,我认为情况更糟,因为以后很难扩展。例如说您是否还想跟踪收听日期。如果在并发情况下增加计数器,则还必须格外小心。