【发布时间】:2018-08-03 21:57:52
【问题描述】:
在这里使用 C#。我有一个包含 3 个属性的遗留类 Person:
- ID(指导)
- 姓名
- 父 ID (guid)
在 SQL 中,它存储在两个表中:
- 表人:包含 ID 和姓名
- 表关系:包含 PersonId、ParentId
例如,给定 Person 对象(为简单起见,未显示 guid):
- parent1:Id = 1,Name = Bob,ParentId = 空
- child1:Id = 2,Name = Scott,ParentId = 1
- child11:Id = 3,Name = Scott jr,ParentId = 2
- child12:Id = 4,Name = John,ParentId = 2
- parent2:Id = 5,Name = James,ParentId = 空
- child21:Id = 6,Name = James jr,ParentId = 5
我想建立List<NewPerson>
其中NewPerson 是一个包含以下内容的类:
- 身份证
- 姓名
- 儿童为
List<NewPerson>
以树的形式显示它们:
- 鲍勃
- --- 斯科特
- -------- 小斯科特
- -------- 约翰
- 詹姆斯
- --- 小詹姆斯
有没有一种有效的方法将旧单位 List<Person> 映射到分层(世代)List<NewPerson>?
【问题讨论】:
-
在数据库中执行此操作的传统方法是在名为 ParentId 的 person 表中添加第三个(可为空的)列。这样,您就不需要“关系”表。然后为了获得整个层次结构,您执行“自连接”(或“递归自连接”)(搜索的好关键字)。你使用的是什么 ORM(EF、Linq2Sql、Dapper、...)?