自动检测所有模型到脚手架

时间:2012-02-09 09:44:58

标签: asp.net-mvc scaffolding asp.net-mvc-4 asp.net-mvc-scaffolding

我有一个ASP.NET MVC 4项目,其中许多模型都是以自定义方式搭建的。我已经定制了模板来创建控制器并查看我希望它们的样子。一切正常。现在我编写了一个PowerShell脚本来为每个需要搭建的模型一次生成控制器和几个视图。这也很好。

然后我去寻找一个PowerShell脚本来在一个命令中构建多个模型,因为现在我必须为我拥有的每个模型手动运行脚本。我发现的第一件事就是在每一行上编写一个脚本来命名一个模型,这个模型工作正常,但在我看来仍然是太多的工作。经过一番深入的搜索后,我发现这可以通过一个脚本来完成,该脚本包含一个模板到scaffold的列表和一个遍历列表的foreach循环,然后对该列表中的每个项执行scaffold-command。这好多了!

我现在唯一要问的是:是否可以编写一些脚本来自动检测Model文件夹中的所有模型,将它们放入列表中然后执行循环。我问这个的原因是因为我没有几个型号,但大约有250个。这并不是我不想手动这样做,而是如果添加,更改或删除某些型号会怎样。

所以我的问题是:有没有办法'动态'从Model文件夹中获取所有模型并将它们放入将要迭代的列表中?

更新

这就是我的脚本“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 个答案:

答案 0 :(得分:2)

阿巴斯

我一直在使用MVCScaffolding模板(使用EF代码优先),其工作方式是创建域模型,然后搭建具有域模型的所有对象。该模板实际上将跳过已经存在脚手架的任何预先存在的控制器/视图的脚手架。但是,还有一个覆盖命令(-FORCE),如果您愿意,它将覆盖任何/所有预先存在的脚手架代码。

这是快速链接:

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

答案 1 :(得分:0)

@jim:你没有提供一个直接的回答(我没有要求),但你确实让我在路上非常感谢你。我去研究模板,通过研究这些模板,我找到了一个从Model文件夹中获取模型的解决方案。它可能不是一个完美的解决方案,但这很有效:

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