C# 1:m关系的映射
映射C# 1:m关系的映射,c#,mysql,sql,model,C#,Mysql,Sql,Model,映射1:m关系的最佳方法是什么 比如说 歌曲数据库。我们有以下表格: 歌曲 艺术家 相册 假设我们需要取所有的专辑。歌曲具有相册的外键 我以前做的是得到所有专辑的列表: SELECT * FROM `Albums`; 然后将其映射到一个对象。 接下来,我将在每个相册中创建一个for-each循环,并创建一个新的SQL查询 SELECT * FROM `Songs` WHERE albumId = album; 然后我会再次绘制地图 这显然是矫枉过正 做这件事的正确方法是什么?我认为一
1:m
关系的最佳方法是什么
比如说
歌曲数据库。我们有以下表格:
歌曲
艺术家
相册
我以前做的是得到所有专辑的列表:
SELECT * FROM `Albums`;
然后将其映射到一个对象。接下来,我将在每个相册中创建一个for-each循环,并创建一个新的SQL查询
SELECT * FROM `Songs` WHERE albumId = album;
然后我会再次绘制地图
这显然是矫枉过正
做这件事的正确方法是什么?我认为一张
专辑
有一张I收藏歌曲
和一位艺术家
有一张I收藏专辑
在这一点之后,您的查询应该是直接的
假设我们需要取所有的专辑
从相册中选择*
唱片有歌曲的外键
我认为一首歌曲
实际上应该有一个专辑
的外键,因为它唯一地定义了一首歌曲
,可以在多个专辑上
我的问题实际上措辞很糟糕。你能举个例子吗 这样的疑问?比如在问题中:用 相关歌曲
从相册中选择a.Album\u Name、s.Song\u Name加入a.Album\u Name=s.Album\u Name上的歌曲s
如果您绝对需要完全填充所有模型对象,那么最好获取所有歌曲、艺术家和相册,并在本地缓存它们
但是,通常情况下,当需要附加信息时,会膨胀模型对象,例如,当用户选择Show Song Details…,此时可以重新查看艺术家和唱片集信息。只是一个疑问,在mySQL中不能使用表联接?@JhonatasKleinkauff当然,我想这实际上是一个坏例子。这不是m:m,让我重新表述一下。@JhonatasKleinkauff编辑了我的问题我的问题实际上措辞非常糟糕。你能举个这样一个查询的例子吗?比如在问题中:获取所有相关歌曲的专辑。我明白了,为了映射,可以使用带有专辑id键的词典。我想这非常有用,谢谢!“我认为一首歌实际上应该有一个专辑的外键,因为它唯一地定义了一首歌,这首歌可以出现在多张专辑上。”当然,你是对的,这是一个错误