Автоматически определять все модели на эшафот - PullRequest
2 голосов
/ 09 февраля 2012

У меня есть проект ASP.NET MVC 4 с множеством моделей, которые можно создавать по своему усмотрению. Я настроил шаблоны для создания контроллеров и просмотра того, как я хочу их видеть. Это все отлично работает. Теперь я написал сценарий PowerShell для генерации контроллера и нескольких представлений одновременно для каждой модели, которую необходимо создать. Это также отлично работает.

Затем я отправился на поиски сценария PowerShell для создания нескольких моделей в одной команде, потому что теперь мне нужно вручную запускать сценарий для каждой имеющейся у меня модели. Первое, что я нашел, было написать скрипт с каждой строкой команды для создания модели, которая работала нормально, но, на мой взгляд, все еще была слишком большой работой. После более глубокого поиска я обнаружил, что это можно сделать с помощью скрипта, в котором есть список моделей для скаффолда и цикл foreach, который выполняет итерации по списку, а затем выполняет команду scaffold для каждого элемента в этом списке. Это было намного лучше!

Единственное, о чем я сейчас себя спрашиваю: можно ли написать какой-нибудь скрипт, который автоматически определяет все модели в папке Model, помещает их в список и затем выполняет цикл. Причина, по которой я спрашиваю об этом, заключается в том, что у меня не пара моделей, а около 250. Дело не в том, что мне не хочется делать это вручную, а в том, что если некоторые модели будут добавлены, изменены или удалены ... .

Итак, мой вопрос: есть ли способ «динамически» получить все модели из папки «Модель» и поместить их в список, который будет повторяться?

Обновление:

Вот так теперь выглядит мой скрипт "ScaffoldAll.ps1" (не все 250 моделей в списке):

$models = "Team", "Player"

foreach($model in $models)
{
    Scaffold CustomController $model -Force
}

Чего я хочу достичь ( псевдо! ):

$models = //All files in Model folder, like: Get-Files "\Models"

Возможно ли это?

Ответы [ 2 ]

2 голосов
/ 09 февраля 2012

Аббас

Я использовал шаблон MVCScaffolding (с EF-кодом вначале), и способ, которым это работает, заключается в том, что вы создаете модель (ы) вашего домена, а затем очищаете ВСЕ объекты, имеющие модель домена. Этот шаблон фактически пропускает каркас для любых ранее существующих контроллеров / представлений, которые были каркасом. Тем не менее, есть также команда переопределения (-FORCE), которая затем перезапишет любой / весь существующий ранее код скаффолдинга, если вы того пожелаете.

вот быстрая ссылка:

http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/

0 голосов
/ 09 февраля 2012

@ jim: Вы не предоставили прямой ответ (который я не требовал), но вы, несомненно, помогли мне встать на путь, за что я вам очень благодарен.Я изучил шаблоны и, немного изучив их, нашел решение получить модели из папки Model.Возможно, это не идеальное решение, но оно отлично работает:

$modelFolder = Get-ProjectFolder "Models\"
foreach($file in $modelFolder)
{
    $model = $file.Name.Replace(".cs", "")
    Scaffold CustomController $model -Force
}
...