No tienes acceso a esta clase

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

No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

14 Días
20 Hrs
25 Min
40 Seg
Curso de ASP.NET Core

Curso de ASP.NET Core

Juan Carlos Ruiz

Juan Carlos Ruiz

Sembrando datos en la base de datos

19/35
Recursos

Aportes 34

Preguntas 5

Ordenar por:

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

Para mis compañeros que esten tomando recien este curso el archivo Programs.cs y StartUp.cs son lo mismo en la version mas reciente de Net Core. y la forma de la configuracion hasta el momento del curso es la siguiente sin errores a la fecha,

using NetCoreMVC.Models;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.EntityFrameworkCore;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllersWithViews();

builder.Services.AddDbContext<EscuelaContext>(options => options.UseInMemoryDatabase("testDB"));


var app = builder.Build();

using(var scope=app.Services.CreateScope()){
    var serv=scope.ServiceProvider;
    try
    {
        var contex=serv.GetRequiredService<EscuelaContext>();
        contex.Database.EnsureCreated();
    }
    catch (System.Exception)
    {
        throw;
    }

}

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Alumno}/{action=Index}/{id?}");

app.Run();

quizas alguien no alcanzo a ver el try, catch

try
            {
                var context = services.GetRequiredService<EscuelaContext>();
                context.Database.EnsureCreated();
            }
            catch (Exception ex)
            {
                var logger = services.GetRequiredService<ILogger<Program>>();
                logger.LogError(ex, "Ocurrio un error");
            }```

si usamos DataAnnotations no es necesario renombrar los UniqueId solo lo marcamos como llave

El curso mas flojo de los que veo hasta ahora. Siendo tan usado C# crei que el curso podria ser mas serio.

Esperando la version 2019

Debe estar programando para el mismo que lo hace tan rapido …

Este es el video que se me ha complicado más del curso

Creo que el curso debe mejorar, aveces siento que mas que una clase es el video de alguien codeando como si no hubiese un mañana.
Es mi humilde opinión y no es mi intención causar molestias :'c

Creo que cuando el profesor hizo la parte de MultiAsignatura se le olvidó poner que el AsignaturaController usara la base de datos en vez de asignarlos directamente. (O si sí lo hizo en el controlador, no lo vi)

Para hacer esa parte y probar que funcionara, yo lo hice de esta manera:

  • Agregué el Contexto al controlador de Asignatura
private SchoolContext _context;

public StudentController(SchoolContext context)
        {
            _context = context;
        }
  • Pasé los datos del Contexto como una Lista hacia la vista (porque recordemos que el contexto los recibe como un Array y la vista nos pide que le enviemos una Lista de los objetos)
public IActionResult MultiStudent()
{            
     var StudentList = _context.Students.ToList();
     ViewBag.Time = DateTime.Now;
     return View(StudentList);
}
Me gustan las clases pero lo que si pienso que puede mejorar es que antes de la practica nos enseñen las nuevas instrucciones a detalle(como el using dentro del método ) y evitar tantas correcciones en el código

3 horas para entender esta clase 😃

Para evitar ese problema de Id en Asignatura y en cualquier otra clase, se puede definir el Id en el constructor de ObjetoEscuelaBase.

Veo el codigo con el que se asegura que la base de datos este creada, y me parece mas rapido y simple, configurar una BD SQL en vez de la de InMemory y llenar los datos a mano desde el manager de SQL o hacerle un CRUD rapido al controller.

Código del Programa Principal

 public static void Main(string[] args)
        {
            // CreateWebHostBuilder(args).Build().Run();

            var host = CreateWebHostBuilder(args).Build();

            using ( var scope = host.Services.CreateScope() )
            {
                var services = scope.ServiceProvider;

                try 
                {
                    var context = services.GetRequiredService<EscuelaContext>();
                    context.Database.EnsureCreated();
                }
                catch (Exception ex)
                {
                    var logger = services.GetRequiredService<ILogger<Program>>();
                    logger.LogError(ex, "An error ocurred creating DB");
                }
            }
            host.Run();            
        }

Valla, es la primera vez que siento que el curso si va mal, entre copiar fragmentos de código y demás.

Si subrayas algo y le das Ctrl + R + R se reemplazara en toda la solucion incluyendo comentarios si deseas.

El curso es bueno comparto la parte de que tal vez es algo rápido pero en el reproductor se le puede bajar la velocidad o por ultimo ponerle pausa para entender mejor parte por parte, por otro lado tal vez muchos esperaban un temario mas avanzado pero a mi parecer el mismo docente a recalcado que solo lo esta haciendo de manera superficial porque para profundizar en cada tema es bastante amplio y equivaldría a hacer un curso nuevo para explicarlo adecuadamente . . .

Alguien ha tenido el mismo problema que le genera en Id, pero con AñoDeCreación?

‘The seed entity for entity type ‘Escuela’ cannot be added because there was no value provided for the required property ‘AñoDeCreación’.’

No estaría encontrando el error, muchas gracias.

aun no entiendo como estos lenguajes son los mejores y los hacen tan complicados de usar, no es para nada intuitivo, esta conexión no lo hubiese logrado nunca por cuenta propia.
y lo peor es que aun no la entiendo del todo

Obviando que este curso necesita actualizarse. Hay una secuencia o dependencia de esta clase y el curo en general con otros cursos previos en los que se explica mas a fondo y con detalle lo que se explica.

Incluso hay una escuela o ruta de aprendizaje para llegar a este punto, los que no entiendan es casi seguro porque se brincaron esos pasos.

a chis minuto 03:35 de donde caray… saca esa lista de asignaturas

Buena Explicación, a la hora de sembrar los datos

que otras estrategias existen para mejorar mi web server cuando tienen muchas instancias en ejecución al mismo tiempo??, siguiendo el ejemplo del usign(var Scope=host.Services.CreateScope()){}

Buena Clase

No caigan en la incertidumbre, en el siguiente vídeo explica más lo que hicimos

Qué curso tan enredado…

En vez de iniciar el ID en todos lados conviene en el constructor de ObjetoEscuelaBase iniciar el ID.

public ObjetoEscuelaBase()
        {
           Id = Guid.NewGuid().ToString();
        }

Me sentí mal cuando no entendí muchas cosas… hasta que leí los comentarios.

Excelente información, acerca de las llaves primarias, la convención es que se debe de usar Id o el NombreClaseId

A mi me sale el problema del Id en mi “CategoryModel” que equivale al “Asignaturas” que tienes ahí.

Sinceramente, comparto con la opinión de los demás, esto parece un curso hecho para el profesor que para los que estamos supuestamente aprendiendo. Hace el curso como si estuviera corriendo, como si se tuviera que ir, la explicación es muy vaga, pone muchas cosas que no se entienden y mucho copy & paste. Simplemente para gente que está comenzando, no lo recomiendo.

Yo medio pude entender esto, gracias a un curso que vi de Laravel en otra web (una dedicada a php) y en ese curso se veía esto de “Seeds” de datos, y nada más por ese curso, puedo si acaso relacionarlo con este tema… Y aún así ni siquiera era tan caótico como es esto…

Buena explicación.

No hay caso con el HasData xD no me lo toma

Por suerte he llegado a este curso después de que introdujeran los cursos de Entity Framework (los he hecho). Entiendo que a los que hicieron este curso antes de que los de EF estuvieran les costó mucho más. Aun así es verdad que el curso podría mejorar mucho más, no se si por el profesor o por el equipo que diseño el curso pero es hora de que lo actualicen y le den esas mejoras.

A mi me estaba dando el error, aparte de que les asigne los Ids que tenia

InvalidOperationException: Unable to determine the relationship represented by navigation property ‘AlumnoModel.EvaluacionesModel’ of type ‘List<EvaluacionModel>’. Either manually configure the relationship, or ignore this property using the ‘[NotMapped]’ attribute or by using ‘EntityTypeBuilder.Ignore’ in ‘OnModelCreating’.

Y la forma que encontré para solucionarlo fue agregando un Id a la clase evaluación de la siguiente manera esto en netCore 7

public class Evaluacion
    {
        [Key]
        public int Id { get; set; }
        public Alumno? Alumno { get; set; }
        public Asignatura? Asignatura { get; set; }

        public float Nota { get; set; }

        public override string ToString()
        {
            return $"{Nota}, {Alumno?.Nombre}, {Asignatura?.Nombre}";
        }
    }

Quien entiende a la gente, siempre piden cursos mas avanzados y mas profundos de Platzi, por que supuestamente solo dan cursos basicos despues aparece un curso profundizado y medianamente complejo y todo el mundo se hunde en el dolor jejeje que curioso