Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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# 以层次结构方式连接类的最佳方法?_C#_Database_Class - Fatal编程技术网

C# 以层次结构方式连接类的最佳方法?

C# 以层次结构方式连接类的最佳方法?,c#,database,class,C#,Database,Class,我真的不确定我是否做对了 我有一个数据库,它由一个包含这些“参数”的表组成 我想从数据库中读取数据并将其填入对象列表中 我所做的(我不确定这样做是否正确)是有一个艺术家类的列表,它有一个名字,和一个专辑列表 唱片集对象具有名称、年份和曲目列表 轨迹对象具有名称、持续时间、类型、年份和文件路径 它基本上是一个列表树,艺术家在其中打开一个专辑分支,专辑打开另一个曲目分支 这是最好的方法吗 希望你明白我想说的。多谢各位 这是最好的方法吗 取决于你对什么是“最好”的理解 似乎您拥有的关系数据可能以层次结

我真的不确定我是否做对了

我有一个数据库,它由一个包含这些“参数”的表组成

我想从数据库中读取数据并将其填入对象列表中

我所做的(我不确定这样做是否正确)是有一个艺术家类的列表,它有一个名字,和一个专辑列表

唱片集对象具有名称、年份和曲目列表

轨迹对象具有名称、持续时间、类型、年份和文件路径

它基本上是一个列表树,艺术家在其中打开一个专辑分支,专辑打开另一个曲目分支

这是最好的方法吗

希望你明白我想说的。多谢各位

这是最好的方法吗

取决于你对什么是“最好”的理解

似乎您拥有的关系数据可能以层次结构形式表示(或具有基于层次结构的视图),其主键是
Artist
,如下所示:

  • 艺术家
    • 相册
      • 轨道
但您的数据可能有曲目(或整张专辑),这些曲目可能是由两名或两名以上的艺术家创作的。您的结构也可以如下所示:

    • 相册
      • 艺术家
IMHO这种数据可以更好地在关系结构中提供,如:

  • Artist
    Class
    • 名称
      ,字符串属性
    • 相册
      相册
      对象的集合
    • 轨迹
      轨迹
      对象的集合
  • Track
    Class
    • 名称
      ,字符串属性
    • 年份
      ,内部属性
    • 艺术家
      ,收藏或
      艺术家
      对象
    • 相册
      相册
      对象引用(因为曲目属于单个相册)

等等。这甚至有助于动态创建不同的层次视图。

是的,为什么不呢?和域名很匹配,看起来不错。如果它适合你的需要,那就去吧。但是你如何从曲目的专辑类中创建对艺术家专辑对象的引用呢?@Tokfrans可能使用了延迟加载。
Filepath
Artist
Album
Track
Year
Duration
Tracknumber
Genre