No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de ASP.NET Core

Curso de ASP.NET Core

Juan Carlos Ruiz

Juan Carlos Ruiz

Scaffolding o borrón y cuenta nueva

32/35
Recursos

Aportes 50

Preguntas 13

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Jajajaja había personalizado mis vistas con mucho esmero y llega esta clase y me pega una bofetada con guante blanco xD.

Me ha gustado mucho ASP.Net, eso que yo repudiaba a Java y C#.

C# ha entrado en mi corazón! ❤️

dotnet tool install -g dotnet-aspnet-codegenerator
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
dotnet restore
dotnet aspnet-codegenerator controller -name AlumnoController -m Alumno -dc EscuelaContext --relativeFolderPath Controllers --useDefaultLayout --re
ferenceScriptLibraries -f

Tuve que instalar este paquete adicional para que me funcionara en la version 3.1

dotnet add package Microsoft.EntityFrameworkCore.Design

Otro aporte sobre los comandos, “Segunda parte” donde el profesor en vez de enseñar cómo buscarlo y tal, simplemente copia y pega una chuleta. Aquí les dejo el link: https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/adding-model?view=aspnetcore-3.1&tabs=visual-studio-code#scaffold-movie-pages

dotnet aspnet-codegenerator controller -name MoviesController -m Movie -dc MvcMovieContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries```

Sólo tienen que reemplazar los valores.

Tuve un par de problemas al generar el codigo, tuve que instalar nuevamente

dotnet add package Microsoft.EntityFrameworkCore.Design

Uso de Scaffolding

Herramienta de generación de código para ASP.NET Core Contiene el comando dotnet-aspnet-codegenerator utilizado para generar controladores y vistas.

dotnet tool install -g dotnet-aspnet-codegenerator
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design

Entity Framework Core es un moderno mapeador de bases de datos de objetos para .NET Soporta consultas LINQ, seguimiento de cambios, actualizaciones y migraciones de esquemas. EF Core trabaja con SQL Server, Azure SQL Database, SQLite, Azure Cosmos DB, MySQL, PostgreSQL y otras bases de datos a través de un plugin de API para proveedores

Tipos de uso común:

  • Microsoft.EntityFrameworkCore.DbContext
  • Microsoft.EntityFrameworkCore.DbSet
dotnet add package Microsoft.EntityFrameworkCore

Componentes compartidos de tiempo de diseño para Entity Framework Herramientas básicas.

dotnet add package Microsoft.EntityFrameworkCore.Design

Entity Framework Core Tools para la interfaz de línea de comandos .NET

Activa estos comandos de dotnet-ef comúnmente utilizados:

  • dotnet ef migrations add
  • dotnet ef migrations list
  • dotnet ef migrations script
  • dotnet ef dbcontext info
  • dotnet ef dbcontext scaffold
  • dotnet ef database drop
  • dotnet ef database update
dotnet tool install --global dotnet-ef

Proveedor de base de datos en memoria para Entity Framework Core (para usar con fines de prueba)

dotnet add package Microsoft.EntityFrameworkCore.InMemory

Proveedor de bases de datos de Microsoft SQL Server para Entity Framework Core.

dotnet add package Microsoft.EntityFrameworkCore.SqlServer

Generacion de Controllers y Views

Primero se debe de crear el modelo

dotnet aspnet-codegenerator controller -name SchoolController `
-m School -dc SchoolContext --relativeFolderPath Controllers `
--useDefaultLayout --referenceScriptLibraries -f

dotnet aspnet-codegenerator controller -name CourseController `
-m Course -dc SchoolContext --relativeFolderPath Controllers `
--useDefaultLayout --referenceScriptLibraries -f

dotnet aspnet-codegenerator controller -name SchoolSubjectController `
-m SchoolSubject -dc SchoolContext --relativeFolderPath Controllers `
--useDefaultLayout --referenceScriptLibraries -f

dotnet aspnet-codegenerator controller -name StudentController `
-m Student -dc SchoolContext --relativeFolderPath Controllers `
--useDefaultLayout --referenceScriptLibraries -f

dotnet aspnet-codegenerator controller -name EvaluationController `
-m Evaluation -dc SchoolContext --relativeFolderPath Controllers `
--useDefaultLayout --referenceScriptLibraries -f

Activar las migraciones

Enable-Migrations

Agregar la primera migracion

Add-Migration [nombre de la migracion]

Se envia las tablas a la base de datos

Update-Database

Referencias
Nuget
Dotnet ASP.NET CodeGenerator
MVC

Scaffolding automatiza los CRUD’s.

Para evitar conflictos de version

dotnet tool install --global dotnet-aspnet-codegenerator --version 2.1.6

El problema por el cual me arrojaba “Could not get the reflection type for DbContext” era por la clase Evaluación con tilde, le quité la tilde y ejecutó con normalidad.

En mi opinión vale completamente la pena aprenderlo de esta forma. Según mi experiencia en la universidad, enseñaron a hacer todo con Scaffolding, pero realmente nadie sabía lo que estaba haciendo, solo era _click derecho _, generar código en Visual Studio… Ahora gracias al conjunto de cursos de esta ruta, he aprendido el porqué de las cosas y cómo es que funciona desde lo más mínimo. Completamente satisfecho hasta acá, lo que queda de profundizar, ya va por cuenta propia. Saludos.

El ValidateAntiForegyToken es como el csrf que se usa en PHP.

Buenos días a todos

Cuando intento crear el controlador me sale el siguiente error y me cierra el proceso de .Net Core Host

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly ‘Microsoft.VisualStudio.Web.CodeGe
neration.Utils, Version=3.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60’. El sistema no puede encontrar el arc
hivo especificado.
at Microsoft.VisualStudio.Web.CodeGeneration.Design.Program.Main(String[] args)

Agradezco cualquier ayuda

Un pequeño aporte.

**- dotnet tool install -g dotnet-aspnet-codegenerator

  • dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design

  • dotnet restore

  • dotnet aspnet-codegenerator controller -name AlumnoController
    -m Alumno -dc EscuelaContext
    –relativeFolderPath Controllers --useDefaultLayout
    –referenceScriptLibraries -f **

Pregunta. El Scaffolding crea el modelo de acuerdo al origen de datos, en este caso data context y estos se generan segun la convencion no?

Creo que es mejor poner nombre de modelos y controllers sin tilde o acento. Así te evitas de estar configurando terminal para hacer el scaffolding.

En mi caso, como estoy usando .NET Core 3.0 tuve que poner este comando porque me tiraba error:

dotnet tool install --global dotnet-aspnet-codegenerator --version 3.0.0

Mi consejo es que busquen aquí: https://www.nuget.org/packages/dotnet-aspnet-codegenerator/

modifican la versión acorde a lo que les sea compatible.

No me gustó utilizar scaffolding.
Problemas que tuve:

  • En el video no se habla nada de instalar
dotnet add package Microsoft.EntityFrameworkCore.Design
  • Luego de creado el código con el resultado
Building project ...
Finding the generator 'controller'...
Running the generator 'controller'...
Attempting to compile the application in memory.
Attempting to figure out the EntityFramework metadata for the model and DbContext: 'Alumno'
Added Controller : '/Controllers/AlumnoController.cs'.
Added View : /Views/Alumno/Create.cshtml
Added View : /Views/Alumno/Edit.cshtml
Added View : /Views/Alumno/Details.cshtml
Added View : /Views/Alumno/Delete.cshtml
Added View : /Views/Alumno/Index.cshtml
RunTime 00:00:09.02

Al correr la aplicación no compilaba. Por algún motivo todas las vistas creadas incluyen using Escuela.Models; y eso hacía que todas las líneas en incluyen Escuela.Models.Alumno no encuentren el modelo, por lo que tuve que borrar el using Escu… .

  • Por último al utilizar Editar / Crear en la vista obtengo el error:
InvalidOperationException: The following sections have been defined but have not been rendered by the page at '/Views/Shared/Simple.cshtml': 'Scripts'. To ignore an unrendered section call IgnoreSection("sectionName").

Creo que crear las vistas y controladores como veníamos haciendo hasta ahora es más apropiado para alguien que está aprendiendo y necesita entender qué sucede en cada paso.

Dejo los comandos que me sirvieron a mi para el proyecto:

dotnet tool install --global dotnet-aspnet-codegenerator --version 6.0.11

         dotnet add package Microsoft.EntityFrameworkCore --version 6.0.12
         dotnet add package Microsoft.EntityFrameworkCore.Tools --version 6.0.12
         dotnet add package Microsoft.EntityFrameworkCore.InMemory --version 6.0.12
         dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 6.0.12
         dotnet add package Microsoft.EntityFrameworkCore.Design --version 6.0.12
         dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design --version 6.0.12

dotnet aspnet-codegenerator controller -name AsignaturaController -m Asignatura -dc DatabaseContext -outDir Controllers --useDefaultLayout --referenceScriptLibraries -f

Un cambio excelente. Iniciar con las bases y aprender con lo que ya tiene la herramienta.

Para los que le sale error al compilar (en el video, al momento de crear el crud del Curso) es porque el proyecto esta ejecución.

Para crear mi base de datos en azure, necesito crear un servidor. Eso tiene algun precio extra? De que manera pudiera obtener la cadena de conexion si suelo usar phpmyadmin?

Yo para que me pueda instalar el paquete con la versión compatible del framework en mi máquina usé el siguiente comando:

dotnet tool install --global dotnet-aspnet-codegenerator --version 3.1.4

En este enlace pueden encontrar todas las versiones:

https://www.nuget.org/packages/dotnet-aspnet-codegenerator/3.1.4

dotnet aspnet-codegenerator controller -name AlumnoController -m AlumnoModel -dc EscuelaContext -outDir Controllers --useDefaultLayout --referenceScriptLibraries -f

Actualicen este curso!!!

hola para los que el nugetpackage no les toma el por defecto
ruta nuget org

dotnet tool install -g --add-source ‘ruta nuget org’ --ignore-failed-sources dotnet-aspnet-codegenerator

la ruta nuget ‘lo pueden buscar en google colocando ruta nuget json de visual studio’

Con Scafolding logré entender como pasan más modelos a una vista (lo hacen con el ViewBag o ViewData aunque con otras cosas avanzadas), porque por ejemplo para el reto anterior intente hacer el controlador de los alumnos pero no sabía como pasar un objeto de cursos para poderlo seleccionar en la vista.

Al final como esoty trabajando con las versiones que utiliza el curso, tuve que hacer 3 instalaciones


dotnet tool install --global dotnet-aspnet-codegenerator --version 6.0.3

dotnet add package System.Configuration.ConfigurationManager --version 6.0.2-mauipre.1.22102.15

dotnet add package Microsoft.EntityFrameworkCore.Design --version 6.0.3
yo: *tardo varias horas en hacerlo funcionar * ef: en 13 segundos papi

Cuando se ejecuten los comandos tener en cuenta la version que tengan instalada, yo trabajo con .NET5 entonces me toco agregar el atributo –version para que funcionara:

dotnet tool install -g dotnet-aspnet-codegenerator --version 5.0.2

https://www.nuget.org/packages/dotnet-aspnet-codegenerator/5.0.2

Para aquellos que trabajaron el proyecto con “netcoreapp2.1” y tienen mensajes de problemas de compatibilidad, intentar de la siguiente forma:

dotnet tool install -g dotnet-aspnet-codegenerator
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design --version 2.1.6
dotnet restore
dotnet aspnet-codegenerator controller -name AlumnoController -m Alumno -dc EscuelaContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries -f

Para los que tengamos un error del estilo MvcControllerWithContext.cshtml not found, pueden revisar el siguiente issue en github que soluciona el problema: https://github.com/dotnet/Scaffolding/issues/1387#issuecomment-735289808

dotnet tool install -g dotnet-aspnet-codegenerator

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design

dotnet restore

Muy interesante

😮

Tremenda chuleta esa presentacion power point, donde la consigo?

Ejemplo generar Controlador, vista y modelo: LINK

Para que funcione las validaciones en la vista simple.

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>@ViewData["Title"] - HolaMundoMVC</title>

    <environment include="Development">
        <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
    </environment>
    <environment exclude="Development">
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
              asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
              asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute"
              crossorigin="anonymous"
              integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"/>
    </environment>
    <link rel="stylesheet" href="~/css/site.css" />
</head>
<body>
    @RenderBody()
    <environment include="Development">
        <script src="~/lib/jquery/dist/jquery.js"></script>
        <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.js"></script>
    </environment>
    <environment exclude="Development">
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"
                asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
                asp-fallback-test="window.jQuery"
                crossorigin="anonymous"
                integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=">
        </script>
        <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js"
                asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"
                asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal"
                crossorigin="anonymous"
                integrity="sha384-xrRywqdh3PHs8keKZN+8zzc5TX0GRTLCcmivcbNJWm2rs5C8PRhcEn3czEjhAO9o">
        </script>
    </environment>
    <script src="~/js/site.js" asp-append-version="true"></script>

    @RenderSection("Scripts", required: false)
</body>
</html>

Buenas tardes a todos:

Tengo este mensaje que me sale en el OUTPUT:
[fail]: OmniSharp.MSBuild.ProjectLoader
Se detectó un conflicto de versiones para Microsoft.AspNetCore.Razor.Language. Para resolver este problema, instale o haga referencia a Microsoft.AspNetCore.Razor.Language 2.2.0 directamente en el proyecto platzi-asp-net-core.

Intenté instalar la versión de ese paquete pero me salen después muchos más errores a la hora de ejecutar:

dotnet build
En la salida de la terminal me sale esto:
Error de restauración en 1.14 sec para C:\Users\Desarrollo\Documents_platzi\1395-aspnet-core\platzi-asp-net-core\platzi-asp-net-core.csproj.

ERROR al compilar.

C:\Users\Desarrollo\Documents_platzi\1395-aspnet-core\platzi-asp-net-core\platzi-asp-net-core.csproj : warning NU1608: Se detectó una versión del paquete fuera de la restricción de dependencia: Microsoft.AspNetCore.App 2.1.1 requiere Microsoft.AspNetCore.Razor.Design (>= 2.1.1 && < 2.2.0), pero la versión Microsoft.AspNetCore.Razor.Design 2.2.0 ya se resolvió.
C:\Users\Desarrollo\Documents_platzi\1395-aspnet-core\platzi-asp-net-core\platzi-asp-net-core.csproj : error NU1107: Se detectó un conflicto de versiones para Microsoft.AspNetCore.Razor.Language. Para resolver este problema, instale o haga referencia a Microsoft.AspNetCore.Razor.Language 2.2.0 directamente en el proyecto platzi-asp-net-core.
C:\Users\Desarrollo\Documents_platzi\1395-aspnet-core\platzi-asp-net-core\platzi-asp-net-core.csproj : error NU1107: platzi-asp-net-core -> Microsoft.VisualStudio.Web.CodeGeneration.Design 2.2.3 -> Microsoft.VisualStudio.Web.CodeGenerators.Mvc 2.2.3 -> Microsoft.VisualStudio.Web.CodeGeneration 2.2.3 -> Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore 2.2.3 -> Microsoft.VisualStudio.Web.CodeGeneration.Core 2.2.3 -> Microsoft.VisualStudio.Web.CodeGeneration.Templating 2.2.3 -> Microsoft.AspNetCore.Razor.Language (>= 2.2.0)
C:\Users\Desarrollo\Documents_platzi\1395-aspnet-core\platzi-asp-net-core\platzi-asp-net-core.csproj : error NU1107: platzi-asp-net-core -> Microsoft.AspNetCore.App 2.1.1 -> Microsoft.AspNetCore.Razor.Language (>= 2.1.1 && < 2.2.0).
1 Advertencia(s)
1 Errores

Mi pregunta es:¿Cómo puedo arreglar esto?
En mi archivo .csproj está así:
<ItemGroup>
<PackageReference Include=“Microsoft.AspNetCore.App” />
<PackageReference Include=“Microsoft.AspNetCore.Razor.Design” Version=“2.2.0” PrivateAssets=“All” />
<PackageReference Include=“Microsoft.EntityFrameworkCore.InMemory” Version=“2.1.1” />
<PackageReference Include=“Microsoft.EntityFrameworkCore.SqlServer” Version=“2.1.4” />
<PackageReference Include=“Microsoft.VisualStudio.Web.CodeGeneration.Design” Version=“2.2.3” />
</ItemGroup>

De antemano muchas gracias

Tengo el mismo problema con vs 2017 ni atrás ni adelante.

Si tengo el VS 2017 community que pasos debo seguir ?
Los mismos ?

“Scaffolding” que permite crear pantallas de edición, visualización, creación y eliminación de los registros de la base de datos. En un par de clics tienes montada la típica pantalla de mantenimiento de una tabla.

Para los que tengan problemas al ejecutare el primer comando les recomiendo utilizar este:

dotnet tool install --global dotnet-aspnet-codegenerator --version 2.1.6

se puede acceder a powershell desde el cmd simplemente escribiéndolo… literal PowerShell, y si tiene el subsistema de linux escribiendo el nombre de la distribución instalada… (son datos y hay que darlos)

muy interesante

En las vistas creadas con scaffolding, tengo este error:

An unhandled exception occurred while processing the request.
InvalidOperationException: The following sections have been defined but have not been rendered by the page at ‘/Views/Shared/Simple.cshtml’: ‘Scripts’. To ignore an unrendered section call IgnoreSection(“sectionName”).

Microsoft.AspNetCore.Mvc.Razor.RazorPage.EnsureRenderedBodyOrSections()

¿Alguien me puede ayudar por favor?

Gracias.

Saludos!!

Y bueno, el Scaffolding no me sirve. Me sale esto:

A type with the name User does not exist
   at Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.<BuildCommandLine>b__6_0()
   at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args)
   at Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.Execute(String[] args)
   at Microsoft.VisualStudio.Web.CodeGeneration.CodeGenCommand.Execute(String[] args)```

en fin, espero que por favor alguien me responda.

ASP.NET, JavaEE, NodeJs, esenciales para todo backend developer, más allá de que luego tengas que trabajar o desarrollar uno en particular. Me encantan las características que hacen necesario el uso de una tecnología en un proyecto u otro.

A los que se les presente el error NU1202 ejecuten
dotnet tool install -g dotnet-aspnet-codegenerator --version=“3.1.5”

Tengo todo instalado pero me devuelve el siguiente mensa :
No code generator ‘controller’
¿por qué?

Para no tener error de compatibilidad al instalar codegenerator:

  1. instalen el donet 5.0 https://dotnet.microsoft.com/download/dotnet/5.0

  2. actualicen el target del proyecto a :
    <TargetFramework>net5.0</TargetFramework>

3.compilen y listo