Я создаю свой собственный шаблон T4, который интегрируется с моделью ADO.NET Entity Framework (файл .edmx), включенной в мое веб-приложение MVC.
Для справки
Пожалуйста, кратко рассмотрите следующие два URL.
- Скотт Хансельман - " Генерация кода T4 Visual Studio Best Secret "
- Блог группы разработчиков Visual Web - краткое руководство для разработчиков ASP.NET MVC
Краткое описание того, что я пытаюсь достичь
Использование механизма T4 для генерации класса контроллера MVC с методами Action на основе первичного ключа (ей) модели ADO.NET Entity Framework.
Что у меня есть сейчас
- Файлы шаблонов MVC T4 (например, Controller.tt, Create.tt и т. Д.) были включены как часть моего веб-проекта MVC.
- У меня есть ADO.NET Entity Framework Файл MyModel.edmx в папке " Models ".
На основе имени контроллера (например, «ProductController») , я хочу получить информацию [System.Type] класса «Product» из модели ADO.NET Entity Framework.
Я хочу иметь возможность извлекать информацию System.Type так же, как файлы MVC View T4 (например, Edit.tt) , как показано ниже.
MvcTextTemplateHost mvcHost = (MvcTextTemplateHost) (Host);
Type type = mvcHost.ViewDataType;
Конечная цель
Я хочу создать генерацию кода метода Controller для чтения информации первичного ключа и т. Д. Из класса ADO.NET Entity Framework через Reflection
и
генерировать основные операции CRUD и сигнатуры методов для операций EDIT, DETAILS, ADD и т. д ...
Где я застрял
Однако, как видно из Краткое руководство по началу работы для разработчиков ASP.NET MVC , я не могу получить [System.Type] для Контроллер T4 Шаблон, потому что класс MvcTextTemplateHost предоставляет только свойство ViewDataType для создания представлений MVC.
Моя попытка получить [System.Type] по следующей методике НЕ работает, потому что modelType возвращается как null , что означает, что он не может найти тип.
Type modelType = Type.GetType(modelFullyQualifiedName, false, true);
Я предполагаю, что это происходит из-за того, что Entity Framework Model включена как часть моего веб-проекта MVC , а не включена как часть скомпилированной сборки библиотеки .DLL.
Некоторые вещи, которые помогут мне найти решение
- Где найти исходный код для класса MvcTextTemplateHost ? Если мне удастся найти хотя бы DLL-файл, я, вероятно, смогу посмотреть, как код загружает информацию о типе, введенную в диалоговом окне «Добавить представление» Visual Studio .
- Есть ли способ динамического извлечения информации System.Type о классе, включенном в проект Visual Studio, из моего шаблона T4 через API IDE Visual Studio?
Буду очень признателен, если кто-нибудь сможет мне помочь в этой теме, поскольку это позволит мне сгенерировать 75% кода для методов действий контроллера MVC для ADD, EDIT, DETAILS и т. Д. И основного кода операции CRUD. *