Вопрос

Я новичок в ASP.NET, но не в программировании.Я переношу наш текущий сайт с PHP/MySQL на ASP.NET(3.5)/SqlServer.Я скрываюсь здесь с момента запуска сайта, поэтому уверен, что один (или несколько) из вас смогут мне помочь.Вот сценарий:

Это сайт отдела обучения и кафедры.в таблице хранится каталог курсов course.Каждый курс может включать множество обязательных курсов. Например, A и B являются обязательными для C.Обычно я сохраняю это либо как столбец, разделенный запятыми, в course или в отдельной таблице course_prereq или course_course как рекурсивное отношение.Эту часть я могу сделать.

Однако бизнес-правила требуют, чтобы каждый курс мог иметь несколько наборов предварительных условий.Например, N требует A, B и C, или N требует X и Y.Вот где я застрял.

Раньше я хранил эту информацию в столбце для строки N как A,B,C|X,Y, проанализировал идентификаторы в 2D-массив PHP, отправил второй запрос для всех строк, идентификаторы которых находились в этом массиве, а затем использовал PHP для разделения этих строк на соответствующие группы.После завершения всей этой обработки группы предварительных условий отображаются на веб-странице в виде отдельных таблиц, например:

| A | A's information goes here |
| B | B's information goes here |
| C | C's information goes here |
- - - - - - - OR - - - - - - - -
| X | X's information goes here |
| Y | Y's information goes here |

Как мне это сделать с помощью ASP.NET?

Это было полезно?

Решение

Добавить стол для хранения Prerequisite Sets.Эта таблица содержит идентификатор набора и ключ к таблице курсов для каждого курса в наборе.В таблице может быть несколько строк для данного идентификатора набора, поэтому вашим первичным ключом будет идентификатор набора. плюс идентификатор курса.Тогда в твоем course_prereq В таблице вы соотносите курсы с различными наборами пререквизитов.Ан OR здесь можно предположить взаимосвязь, поскольку любое ANDs применяются в самих наборах.

Другие советы

Создайте таблицу PrequireSet, которая FK соответствует каждому предварительному требованию.Затем создайте таблицу Course_PrequireSet многие-ко-многим, которая FK соответствует курсу и набору предварительных требований.В большинстве случаев в Course_PrerequistieSet будет только одна запись, но если их несколько, то это будет отношение ИЛИ.

Оба ответа выше были очень полезны.В итоге я использовал только одну таблицу базы данных вместо предложенных двух.В таблице содержится course_id, prereq_id, и set_id, которые все вместе образуют первичный ключ.

На странице ASP.NET я использую повторитель для обхода хранимой процедуры sqldatasource, которая возвращает наборы предварительных требований курса, и представление сетки внутри этого повторителя, которое считывает индивидуальную информацию о предварительных требованиях из второй хранимой процедуры sqldatasource.Так:

RepeaterSqlDataSource (возвращает идентификаторы наборов)
Repeater
. . . GridViewSqlDataSource (возвращает информацию о курсе для каждого prereq_id в наборе
. . . GridView

Надеюсь, это будет полезно всем, кто сталкивается с подобным сценарием.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top