2015-11-09 3 views
0

Я довольно новичок в разработке программного обеспечения, и я очень смущен тем, что должны представлять классы в модели, я разработаю сценарий, и я спрошу пару вопросов в конце. Я использую VS 2013 с MVC.Какие классы моделей должны представлять?

У меня есть 3 таблицы, tblStudent (* StudentID, StudentName, StudentLastName, StudentDateOfBirth) tblModule (* ModuleID, ModuleName, ModuleDescription) tblStudentModules (* StudentID * ModuleID) - таблица, созданная сломать многие ко многим отношений

и я хочу, чтобы выполнить этот запрос с помощью хранимой процедуры в базе данных:

SELECT A.StudentID 
    ,A.StudentName] 
    ,A.StudentLastName 
    ,B.ModuleName 
FROM tblStudent A, tblModule B, tblStudentModules C 
Where A.StudentID = C.StudentID 
     And B.ModuleID = C.ModuleID 

Теперь мой запрос использует 3 таблицы, и результат представляет собой сочетание различных атрибутов таблиц я есть, поэтому должны моя модель ses представляют отдельные объекты (например, Student, modules) или должны представлять результирующий набор Query, который я хочу выполнить (класс с StudentID, StudentName, StudentLastName, ModuleName), поэтому я могу сопоставить результат хранимой процедуры с одним модель класса?

+0

Обычно у вас будет модель данных, которая будет сопоставляться с таблицами базы данных (без сомнения, вам понадобятся эти возможности, чтобы иметь возможность создавать и редактировать «Студент» 'и' Module') и просматривать модели, которые объединяют данные из разных моделей данных (поэтому, если вы не используете EF, тогда вы можете сопоставить свой SP с моделью просмотра) –

+0

View Model, вот что я искал, спасибо вы за то, что указали мне в правильном направлении! ... вы знаете, как я могу сопоставить SP с моделью просмотра? Я не могу найти много документации по использованию хранимых процедур в настоящее время, устарели ли они сейчас? – randomguy04

+0

Конечно, не устаревает, но реже встречается со многими людьми, использующими EF. Создайте метод в службе, которая возвращает вашу модель представления, и откроет соединение, выполните DataReader и прочитайте значения в вашей модели представления. –

ответ

0

Модели являются бизнес-слоем при рассмотрении приложений MVC. Он будет создан на основе структуры базы данных. Всегда создавайте модели для таблиц вашей базы данных. То есть вам нужно будет создать модели для tblStudent, tblModule и tblStudentModules.

ViewModel - один из невысказанных слоев в приложении ASP.NET MVC. Он подходит между Model и View и действует как контейнер данных для View. ViewModel - просмотр конкретных данных. Он будет создан на основе представления. Таким образом, вам нужно создать viewmodels на основе каждого представления. Эти модели могут содержать или не содержать переменные исходных моделей.

То есть вам необходимо создать режим просмотра для хранимой процедуры, которую вы пишете, которая содержит StudentID, StudentName, StudentLastName и ModuleName. То есть, все, что нам нужно отображать на странице просмотра, являются переменными viewmodel.

  • View будет строго типизированный вид типа ViewModel.

  • Модель и ViewModel должны быть независимыми друг от друга. Контроллер
    создаст и инициализирует объект ViewModel на основе одного или нескольких
    Модельный объект.

+0

Танк вам очень понравился! это именно то, что я искал. – randomguy04

0

Личное мнение - но класс в модели, описанной выше, должен представлять собой «вещь», будь то студент, модуль или взаимосвязь между ними.

Если вы должны были использовать Entity Framework, например, чтобы взаимодействовать с базой данных из кода, тогда будет представлена ​​база данных, коллекция из трех классов, по одной для каждой из описанных таблиц.

+0

Фактически EF нормально игнорирует таблицу привязки и преобразует ее в коллекции объектов на каждом из двух других, если только ссылка не содержит дополнительных данных – MikeT

+0

, если я получу это прямо, можно ли использовать EF для создания модели и то у меня есть свои «Модели для просмотра», спасибо! – randomguy04

0

Это очень сложный вопрос, который не может иметь быстрый ответ, однако вырубить версию:

Не следует путать модель базы данных с объектной моделью, в то время как есть много точки сходство - это не одно и то же.

Объект представляет собой объект, который содержит естественно сгруппированные элементы и функции

Где, как таблица нормализуется представление данных

Чтобы использовать пример у вас есть студенты и модули, которые являются основными лицами, которые используют 3-й таблица для поддержания отношений

На объектной модели у вас должен быть класс Студента, а класс модуля класс Student будет иметь набор модулей внутри него. поэтому студент будет управлять своими собственными отношениями с модулями, и каждый модуль может содержать коллекцию учеников, позволяющую ей также поддерживать свои отношения.

Однако, студент - это тип человека, поэтому вы можете определить класс Person, а затем наследовать ученика на этом уроке и расширить его функциональность, чтобы включить поведение ученика, теперь в этой ситуации человек, вероятно, не имеет никакого значения, если фильтр через детский класс, такой как студент или учитель. в базе данных трудно поддерживать, так как у вас не может быть таблицы людей, которая не существует

Это идея создания MVC и MVVM, так как это побуждает вас создавать многоуровневую систему, ваш нижний уровень, который управляет отношениями объекта базы данных и вашим верхним уровнем, который обрабатывает взаимодействие с пользователем.

+0

Очень полезное объяснение, я думаю, что я смешивал концепции буксировки, поэтому я действительно был очень смущен, спасибо! – randomguy04

Смежные вопросы