Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 1:m关系的映射_C#_Mysql_Sql_Model - Fatal编程技术网

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键的词典。我想这非常有用,谢谢!“我认为一首歌实际上应该有一个专辑的外键,因为它唯一地定义了一首歌,这首歌可以出现在多张专辑上。”当然,你是对的,这是一个错误