Я использую Entity Framework в проекте ASP.NET MVC + Angular, и имеется каскадный раскрывающийся список со следующими данными, и при создании заявки эти значения раскрываются в таблице заявок.
Родительский субъект:
| 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:
Пользователь выбирает родителя, а затем выбирает соответствующую дочернюю запись в раскрывающихся списках каскада. Если дочерняя запись родительской записи отсутствует, дочерний раскрывающийся список будет скрыт, а для ChildId будет задано значение 0 (ноль) для таблицы заявок. Потому что и ParentId и ChildId являются обязательными полями.
Сценарий II: Однако я не уверен, является ли это хорошим подходом для этого сценария, и подумайте о том, чтобы создать еще одну дочернюю запись для основной записи (записей), которая имеет не дочерняя запись с тем же именем, как показано ниже:
Дочерняя сущность:
| Id | ParentId | Name |
--------------------------------------
| ... | ... | ... |
| 8 | 4 | Electricity |
| ... | ... | ... |
--------------------------------------
При этом не будет необходимости использовать записи parent6-child с Id 0, и когда пользователь выберет Electricity в качестве родительского, в раскрывающемся списке дочерних элементов будет указан Electricity как дочерняя запись (которая также может быть скрыта) и ParentId- ChildId будет 4-8 в таблице билетов. Какой сценарий лучше? Или есть лучший сценарий для этой ситуации? С наилучшими пожеланиями ...