我在ASP.NET MVC + Angular项目中使用Entity Framework,并且使用以下数据进行级联下拉,创建票证时,这些下拉值存储在票证表中。
父实体:
| Id | Name |
-------------------------
| 0 | N/A |
| 1 | Software |
| 2 | Hardwire |
| 3 | System |
| 4 | Electricity |
-------------------------
子实体:
| Id | MasterId | Name |
--------------------------------------
| 0 | 0 | N/A |
| 1 | 1 | Java |
| 2 | 1 | C# |
| 3 | 2 | Monitor |
| 4 | 2 | Keyboard |
| 5 | 3 | EMail |
| 6 | 3 | Antivirus |
| 7 | 3 | Operating Sys.|
--------------------------------------
票务实体:
| Id | ParentId | ChildId | Subject |
---------------------------------------------
| 1 | 1 | 1 | Xxxxxxx |
| 2 | 1 | 2 | Xxxxxxx |
| 3 | 2 | 3 | Xxxxxxx |
| 4 | 2 | 4 | Xxxxxxx |
| 5 | 3 | 5 | Xxxxxxx |
| 6 | 3 | 6 | Xxxxxxx |
| 7 | 3 | 7 | Xxxxxxx |
| 8 | 4 | 0 | Xxxxxxx |
| 9 | 4 | 0 | Xxxxxxx |
| 10 | 4 | 0 | Xxxxxxx |
---------------------------------------------
有些父记录没有子记录,例如电力,因此,我计划使用以下方法:
方案I: 用户选择父级,然后从级联下拉列表中选择相应的子级记录。如果没有父记录的子项,则该子项下拉列表将被隐藏,并且Ticket表的ChildId设置为0(零)。因为ParentId和ChildId都是必填字段。
方案二: 但是,我不确定这是否是此方案的好方法,并考虑为主记录创建另一个子记录没有以下名称的子记录:
子实体:
| Id | ParentId | Name |
--------------------------------------
| ... | ... | ... |
| 8 | 4 | Electricity |
| ... | ... | ... |
--------------------------------------
这样做,将不需要使用ID为0的parent6-child记录,并且当用户选择Electricity作为父级时,子项下拉列表将在Electricity作为子级记录(也可以隐藏)和ParentId-中列出。票证表中的ChildId将为4-8。哪种情况更好?还是针对这种情况有更好的方案?问候...