Tsiren Naimanov: Прикладной пример: нужные для контроллера интерфейсы сервисов объявляются как аргументы конструктора, а фабрика контроллеров (с помощью IoC-контейнера) позаботится о том, чтобы под требуемые интерфейсы подобрались нужные имплементации. А в коде выше мы конфигурируем связь "интерфейс <--> реализация"
Tsiren Naimanov: IoC-контейнер исследует сборку (ту, в которой лежит GadgetRepository) в поисках классов, заканчивающихся на "...Repository" и автоматически регистрирует их в качестве внедряемых зависимостей для интерфейсов, которые они реализуют. Будет внедрять одну сущность на запрос.
M-Misha-M: Миграционные скрипты тоже можно генерить. Допустим, MySQL Workbench вроде бы умеет: https://www.mysql.com/products/workbench/migrate/. В .NET-мире популярная ORM Entity Framework сама управляет миграциями.
Но и руками это делать возможно: IF EXISTS, ALTER TABLE ...
Tsiren Naimanov: Представьте, что репозиторий это полка с %TableName%.
По поводу EF, это свойство LINQ и его IQueryble интерфейса. Методы, возвращающие IQueryable достраивают ваш запрос (expression tree), а те, что возвращают разного рода IEnumerable - выполняют/посылают его. Справедливо как для EF, так и, скажем, для List (Linq2Entitites).
Tsiren Naimanov: А в какой именно репозиторий - можно решить, отталкиваясь от сущности, которая является нашей целью: мы извлекаем что? Пост => BlogPostRepository.GetPostsByTag(Tag t). Когда нам нужно загрузить список из тегов для облака тегов, то мы дергаем TagRepository.
Tsiren Naimanov: Наша цель - делать как можно меньше лишних запросов, т.е. одним запросом. Запросы у нас формирует репозиторий, потому его нужно научить так делать. В принципе, тут от задачи зависит, что решается на уровне BL (сервис) или DAL (репозиторий), т.к. логику можно в некотором объеме перемещать между слоями.
Максим Руднев: Нет, я о том, что вы могли неправильно добавить имеющиеся исходники в проект. Вот он и пишет, что SNMPManager.obj не найден, то есть линковаться и не к чему. У вас все исходники (вместе с оконным проектом) лежат в одной директории? В Project Explorer'е файл SNMPManager.cpp отображается?
Tsiren Naimanov: То, что вы называете "MVC" в контексте ASP.NET называется именно "ASP.NET MVC", как и "ASP.NET Web API", как и многие штуки с приставкой "ASP.NET X".