Хорошо имел немного взгляда. , конечно Вы не можете использовать информацию о Типе. Кроме того, название локальной переменной не доступно во времени выполнения, потому что их имена не компилируются в метаданные блока.
Я предостерегаю от обработки модели как простого уровня доступа к данным. Это чрезмерное упрощение и приводит к тому, что вы помещаете слишком много кода на уровень контроллера. Лучше, если вы поместите больше этого кода в Модель и сделаете постоянство базы данных только частью внутреннего кода Модели. Мне нравится думать о MVC так:
, но не ограничиваясь им. Это в основном шаблон Page Controller .
Другой способ думать об этом: предположим, вам нужно было перенести свое веб-приложение на другую платформу, например приложение командной строки или настольное приложение с графическим интерфейсом. Какие части логики приложения следует использовать повторно? Контроллер и представление будут меняться при переносе приложения на другую платформу, потому что потребуется изменить реализацию как ввода, так и вывода. Код, который не нужно изменять, должен быть реализован в вашей модели.
Если вы правильно сделали разделение задач, то модель, представление и контроллер будут минимально связаны, и вы сможете изменить реализацию одного, не слишком сильно влияя на другие. Если вы измените модель и обнаружите, что переписываете много кода в контроллере или представлении, вы, вероятно, не разделили эти слои должным образом. И наоборот.
Прочтите об антипаттерне Мартина Фаулера Модель анемической области или Domain Driven Design Quickly , чтобы получить некоторые другие перспективы.
Также см. Мой блог от 2008 года. , который я написал в ответ на людей, осуждающих паттерн Active Record. Он получил несколько хороших комментариев и обсуждений.
Типа. Это выглядит так:
На сегодняшний день наиболее часто используется шаблон:
Database -> DAL -> BLL -> Controller -> View Model -> UI
Где
DAL == Data Access Layer (aka ORM, Object-Relational mapper)
BLL == Business Logic Layer
Обратите внимание, что вам не всегда нужен каждый слой. Например, BLL и View Model могут быть необязательными, если приложение достаточно маленькое.
Вы должны проверить учебник NerdDinner. Все эти концепции описаны в одной ссылке.
Вот несколько замечательных объяснений, если вы новичок в MVC:
Краткое примечание, вы правы, когда говорите, что Контроллер может (не обязательно) быть бизнес-уровнем, а представление - это уровень представления.
Однако модель - это объекты (в зависимости от реализации), содержащие данные, тогда как Уровень данных - это уровень, который извлекает / обрабатывает данные.