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! ❤️
Introducción a ASP.NET Core
Todo lo que aprenderás sobre ASP.NET Core
Herramientas y prerrequisitos
La importancia del middleware en el entorno web
Mi primera aplicación ASP.Net Core
Habilitar certificados, planillas preinstaladas
Revisión detalladas de la estructura de directorios
¿Qúé es el patrón MVC?
Nuestro Proyecto
Modelo Vista Controlador a nivel básico
Vista y controlador
Modelo a nivel básico
Razor Syntax
Vistas Plantillas y modelo
Vistas, plantillas, Archivos de inicio
Importación de modelos
Vistas para listar asignaturas
Vistas parciales
Mostrando otras listas de objetos
Actualizando la versión de bootstrap
Entity Framework Core
Introducción a entity framework
Conectando la solución con Entity Framework Core
Sembrando datos en la base de datos
Optimizando siembra de datos
Refactoring del Modelo para un ORM
Implementando cambios en el modelo
Refactoring siembra de datos
Ajuste de vistas y formularios
Ajuste de enrutamiento
Ajuste de vistas y controladores
Creando un formulario
Validaciones de formularios
Tu primer Reto
Atributos de validación y bases de datos
Data annotations
Segundo Reto
Usando una Base de Datos de verdad
Diseño de vistas y controladores optimizado
Scaffolding o borrón y cuenta nueva
Tercer Reto
Deploy del sitio
Publicando el website
Conclusiones
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Juan Carlos Ruiz
Aportes 50
Preguntas 13
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
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:
dotnet add package Microsoft.EntityFrameworkCore.Design
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… .
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 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
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:
instalen el donet 5.0 https://dotnet.microsoft.com/download/dotnet/5.0
actualicen el target del proyecto a :
<TargetFramework>net5.0</TargetFramework>
3.compilen y listo
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?