2

カスタムの方法で足場を組む多くのモデルを含む ASP.NET MVC 4 プロジェクトがあります。テンプレートをカスタマイズして、コントローラーとビューを希望どおりに作成しました。これはすべてうまくいきます。これで、スキャフォールディングが必要なモデルごとにコントローラーといくつかのビューを一度に生成する PowerShell スクリプトを作成しました。これもうまくいきます。

次に、1 つのコマンドで複数のモデルをスキャフォールディングする PowerShell スクリプトを探しました。これは、現在所有しているモデルごとにスクリプトを手動で実行する必要があるためです。私が最初に見つけたのは、モデルを足場にするコマンドを各行に記述したスクリプトを作成することでした。もう少し詳しく調べてみると、これは、足場となるモデルのリストと、リストを反復処理してそのリスト内の各項目に対して scaffold-command を実行する foreach ループを持つスクリプトで実行できることがわかりました。これはずっと良かったです!

私が今自問している唯一のことは、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"

これは可能ですか?

4

2 に答える 2

2

アッバース、

私は MVCScaffolding テンプレート (EF コード ファースト) を使用してきましたが、これが機能する方法は、ドメイン モデルを作成してから、ドメイン モデルを持つすべてのオブジェクトをスキャフォールディングすることです。このテンプレートは、実際には、スキャフォールディングされた既存のコントローラー/ビューのスキャフォールドをスキップします。ただし、オーバーライド コマンド (-FORCE) もあり、必要に応じて、既存のスキャフォールディング コードをすべて上書きします。

ここにクイックリンクがあります:

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

于 2012-02-09T09:52:49.523 に答える
0

@jim: あなたは直接的な回答を提供しませんでした (私は要求しませんでした) が、あなたは確かに私を道に導いてくれました。テンプレートを調べて、これらを少し調べたところ、Model フォルダーからモデルを取得する解決策が見つかりました。これは完璧な解決策ではないかもしれませんが、これは完全に機能します:

$modelFolder = Get-ProjectFolder "Models\"
foreach($file in $modelFolder)
{
    $model = $file.Name.Replace(".cs", "")
    Scaffold CustomController $model -Force
}
于 2012-02-09T11:16:45.593 に答える