-
Empezaremos creando la siguiente estructura de carpetas como se ve en el ejemplo
**Note: NOTAS **
- (01 - Frontend) - Para alojar la web
- (02 - Services) - Para alojar nuestra capa de lógica
- (03 - Backend) - Repositorios y acceso a datos
- Crear la solución en Visual studio con el nombre
NombreAlumno.Workshop.ConferencesWeb - Crearemos una blioteca de clase con el nombre
NombreAlumno.workshop.Backend
- Crearemos dentro de una carpeta Models las siguientes clases
- Clase
BaseModel
using System;
using System.Collections.Generic;
using System.Text;
namespace Encamina.workshop.Backend.Models
{
public class BaseModel
{
public int ID { get; set; }
}
}- Clase
Event
using System;
using System.Collections.Generic;
using System.Text;
namespace Encamina.workshop.Backend.Models
{
public class Event : BaseModel
{
public string Name { get; set; }
public DateTime DateEvent { get; set; }
public string Organizer { get; set; }
public ICollection<Session> Sessions { get; set; }
}
}- Clase
Session
using System;
using System.Collections.Generic;
using System.Text;
namespace Encamina.workshop.Backend.Models
{
public class Session : BaseModel
{
public string Title { get; set; }
public int ConferenceId { get; set;}
public string Description { get; set; }
public int Level { get; set; }
public int SpeakerId { get; set; }
public Speaker Speaker { get; set; }
public int EventId { get; set; }
public Event Event { get; set; }
}
}- Clase
Speaker
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Text;
namespace Encamina.workshop.Backend.Models
{
public class Speaker : BaseModel
{
[Required]
public string Name { get; set; }
[Required]
public string Bio { get; set; }
public string Twitter { get; set; }
public string Mail { get; set; }
public string Photo { get; set; }
public ICollection<Session> Sessions { get; set; }
}
}- Instalar en el proyecto de backend el paquete nuget EntityFramework para .Net Core
- Creamos la clase
ConferenceContext.csen el proyecto de backend
using Encamina.workshop.Backend.Models;
using Microsoft.EntityFrameworkCore;
using System;
namespace Encamina.workshop.Backend
{
public class ConferenceContext : DbContext
{
public DbSet<Event> Events { get; set; }
public DbSet<Session> Sessions { get; set; }
public DbSet<Speaker> Speakers { get; set; }
public ConferenceContext(DbContextOptions<ConferenceContext> options) : base(options)
{
}
}
}- Creamos una clase
DbInitializer.cspara iniciar la base de datos en momento de ejecución
using System;
using System.Collections.Generic;
using System.Text;
namespace Encamina.workshop.Backend
{
public static class DbInitializer
{
public static void Initialize(ConferenceContext context)
{
context.Database.EnsureCreated();
}
}
}