{"id":407,"date":"2016-04-18T21:44:00","date_gmt":"2016-04-18T19:44:00","guid":{"rendered":"http:\/\/blog.ghbss.de\/?p=407"},"modified":"2016-10-21T10:57:55","modified_gmt":"2016-10-21T08:57:55","slug":"mvc5-applikation-scaffolder","status":"publish","type":"post","link":"https:\/\/blog.ghbss.de\/?p=407","title":{"rendered":"MVC5-Applikation Scaffolder"},"content":{"rendered":"<p>Ich versuche der Zeit ein Scaffolder zu entwickeln, der in der Lage ist ein MVC5-Applikation nur anhand der Modele zu erweitern.<\/p>\n<p>Scaffolder soll folgende Files automatisch generieren:<\/p>\n<ul>\n<li>Service und dazu geh\u00f6riger Service-Interface<br \/>Services werden die Verbindung zwischen DBContext und den Controller herstellen. Die Kommunikationsschnittstelle wird auf ViewModel gesetzt anstatt der Model.\n<li>ViewModels &#8211; damit die Model-Klassen um eventuelle extra Informationen(Properties) erweitert werden k\u00f6nnen.<br \/>Hierzu werden unterschiedliche ViewModels ben\u00f6tigt:<br \/>&#8211; ViewModel f\u00fcr Liten-Anzeige(Kurze liste von properties)<br \/>&#8211; ViewModel f\u00fcr Detail (Komplette Liste von Properties mit aufgel\u00f6ster externer Beziehungen)<br \/>&#8211; ViewModel f\u00fcr Edit (Properties beinhalten alle M\u00f6glichen werden um einen Auswahl zu treffen)\n<li>Controller und dazu geh\u00f6riger Interface<br \/>Dieser Kontroller setzt den Service-Interface anstatt DBContext ein um die Daten zu bearbeiten.\n<li>Views (Create , Edit , Delete , List) <\/li>\n<\/ul>\n<p>Um ein Scaffolder zu generieren braucht man vor allem einen N\u00fctzlichen Extention f\u00fcr VS: &#8222;<a href=\"https:\/\/visualstudiogallery.msdn.microsoft.com\/a16c2d07-b2e1-4a25-87d9-194f04e7a698\" target=\"_blank\">Sidewaffle<\/a>&#8222;<\/p>\n<p>Es gibt in github ein Project den ich als Vorlage benutzen m\u00f6chte: &#8222;<a href=\"https:\/\/github.com\/robinli\/MVC5-Scaffolder\" target=\"_blank\">https:\/\/github.com\/robinli\/MVC5-Scaffolder<\/a>&#8222;.<\/p>\n<p>Nach ein kurzer \u00dcberblick muss ich sagen, das Quellkode ist verst\u00e4ndlich. Ich denke es wird nicht zu schwer sein es zu erweitern bzw. als Vorlage f\u00fcr ein neu Implementierung her zunehmen.<\/p>\n<p>Hier noch ein guter Einstiegspunkt: <a href=\"https:\/\/blogs.msdn.microsoft.com\/webdev\/2014\/04\/03\/creating-a-custom-scaffolder-for-visual-studio\/\" target=\"_blank\">https:\/\/blogs.msdn.microsoft.com\/webdev\/2014\/04\/03\/creating-a-custom-scaffolder-for-visual-studio\/<\/a><\/p>\n<h3>Links<\/h3>\n<ul>\n<li>MSDN: <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/dd831853(v=vs.140).aspx\" target=\"_blank\">Visual Studio 2015<\/a>\n<li><a href=\"http:\/\/blogs.endjin.com\/2014\/07\/a-step-by-step-guide-to-developing-visual-studio-item-templates-using-sidewaffle\/\" target=\"_blank\">A step by step guide to developing Visual Studio item templates using SideWaffle<\/a>\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/ms247121.aspx\" target=\"_blank\">Creating Custom Project and ItemTemplates in Visual Studio<\/a>\n<li><a href=\"https:\/\/blogs.msdn.microsoft.com\/webdev\/2014\/04\/03\/creating-a-custom-scaffolder-for-visual-studio\/\" target=\"_blank\">Creating a Custom Scaffolder for Visual Studio<\/a>\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/microsoft.aspnet.scaffolding.codegenerator(v=vs.118).aspx\" target=\"_blank\">CodeGenerator Class<\/a>\n<li><a href=\"https:\/\/github.com\/dotnet\/Roslyn\" target=\"_blank\">Roslyn<\/a>\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/cc488545.aspx\" target=\"_blank\">Using ASP.NET Dynamic Data<\/a> <\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Ich versuche der Zeit ein Scaffolder zu entwickeln, der in der Lage ist ein MVC5-Applikation nur anhand der Modele zu erweitern. Scaffolder soll folgende Files automatisch generieren: Service und dazu geh\u00f6riger Service-InterfaceServices werden die Verbindung zwischen DBContext und den Controller herstellen. Die Kommunikationsschnittstelle wird auf ViewModel gesetzt anstatt der Model. ViewModels &#8211; damit die Model-Klassen [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[7,9],"class_list":["post-407","post","type-post","status-publish","format-standard","hentry","category-asp-net","tag-asp-net","tag-scaffold"],"_links":{"self":[{"href":"https:\/\/blog.ghbss.de\/index.php?rest_route=\/wp\/v2\/posts\/407","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ghbss.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ghbss.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ghbss.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ghbss.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=407"}],"version-history":[{"count":18,"href":"https:\/\/blog.ghbss.de\/index.php?rest_route=\/wp\/v2\/posts\/407\/revisions"}],"predecessor-version":[{"id":490,"href":"https:\/\/blog.ghbss.de\/index.php?rest_route=\/wp\/v2\/posts\/407\/revisions\/490"}],"wp:attachment":[{"href":"https:\/\/blog.ghbss.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=407"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ghbss.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=407"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ghbss.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=407"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}