#NetCore crear una base de datos CodeFirst

Agrega los siguientes NuGet packages a un proyecto .net Core:

Microsoft.EntityFrameworkCore

Microsoft.EntityFrameworkCore.SqlServer

Microsoft.EntityFrameworkCore.Tools

 

Crea una carpeta con el nombre “Models

Agrega una clase con el nombre “User

Agregale las referencias a la clase:

using System.ComponentModel.DataAnnotations;

using System.ComponentModel.DataAnnotations.Schema;

 

Agrega el siguiente código a la clase:

    [Table(“Users”, Schema = “dbo”)]

    public class User

    {

        [Key]

        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]

        public int Id { get; set; }

        [Required]

        [Column(TypeName = “varchar(20)”)]

        public string Username { get; set; }

        [Required]

        [Column(TypeName = “varchar(20)”)]

        public string Password { get; set; }

    }

 

Agrega una clase con el nombre “EFDataContext

Agregale la referencia:

using Microsoft.EntityFrameworkCore;

 

Agrega el siguiente código a la clase:

    public class EFDataContext : DbContext

    {

        public DbSet<User> Users { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

        {

            optionsBuilder.UseSqlServer(@”data source=ServerName; Initial Catalog=DBName;User ID=DBUsername; Password=DBPassword”);

        }

    }

Abre el “Package Manager Console

Agrega migrations con el siguiente comando:

Add-Migration InitialCreate

 

En el directorio raíz del proyecto aparece una carpeta con el nombre “Migrations

Actualiza la base de datos para generar la tabla con el siguiente comando:

Update-Database

 

Listo, la base de dados “DBName” ha sido creada con la tabla “Users

 

Nota:

En caso de hacer cambios en el código y querer actualizarlos en la base de datos elimina la carpeta “Migrations” y ejecuta de nuevo los comandos para generar el migrations y actualizar la base de datos

Probado en: .net Core 2.2

#Log4net en #NetCore

1 – Instalar

Agrege el NuGet package “log4net

2 – Configurar

Agregue un archivo de configuración al proyecto “log4net.config

Agregue la siguiente configuración al archivo:

<?xml version=”1.0″ encoding=”utf-8″ ?>

<log4net>

  <appender name=”FileAppender” type=”log4net.Appender.RollingFileAppender”>

    <file type=”log4net.Util.PatternString” value=”c:\log4net.log” />

    <appendToFile value=”true” />

    <rollingStyle value=”Size” />

    <maxSizeRollBackups value=”20″ />

    <maximumFileSize value=”5MB” />

    <threshold value=”ALL” />

    <staticLogFileName value=”true” />

    <layout type=”log4net.Layout.PatternLayout”>

      <conversionPattern value=”%date [%thread] %-5level %-50logger {%ndc} – %message%newline” />

    </layout>

  </appender>

  <root>

    <level value=”DEBUG”/>

    <appender-ref ref=”FileAppender”/>

  </root>

</log4net>

En el archivo “Program.cs” agregue las referencias:

using log4net.Config;

using System.Xml;

using System.Reflection;

 

En el método “Main” agregue al principio:

            XmlDocument log4netConfig = new XmlDocument();

            log4netConfig.Load(File.OpenRead(“log4net.config”));

            var repo = log4net.LogManager.CreateRepository(Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy));

            XmlConfigurator.Configure(repo, log4netConfig[“log4net”]);

 

3 – Usar

En cualquier clase donde se quiere usar el log4net agregar la referencia:

using log4net;

 

Después crear el objeto de referencia

private readonly ILog _logger = LogManager.GetLogger(typeof(NombreClase));

 

Ahora puede el logger desde cualquier parte de la clase

            _logger.Info(“Hola mundo”);

 

Probado en: .net Core 2.2

C# – Agregar BackgroundService a un proyecto .net Core

Agregue una clase “MainBackgroundService

   public class MainBackgroundService

    {

    }

 

Agregue referencia a “Microsoft.Extensions.Hosting

using Microsoft.Extensions.Hosting;

 

Agregue herencia a la clase “BackgroundService

   public class MainBackgroundService : BackgroundService

    {

    }

 

Agregue el método sobrecargado “ExecuteAsync

       protected async override Task ExecuteAsync(CancellationToken stoppingToken)

        {

            while (!stoppingToken.IsCancellationRequested)

            {

                //Su codigo aqui

                await Task.Delay(10000, stoppingToken);

            }

        }

 

Registre el “MainBackgroundService” en el “Startup” en “ConfigureServices(IServiceCollection services)

       services.AddHostedService<BackgroundService>();

 

Probado en: .net Core 2.0

C# – Agregar un DataService a un proyecto .net Core

Agregue una interfaz “IMainDataService”:

   public interface IMainDataService

    {

    }

 

Agregue un método a la interface:

            string HelloWorld();

 

Agregue una clase “MainDataService”:

   public class MainDataService

    {

    }

 

Agregue herencia a la clase “IMainDataService”:

   public class MainDataService : IMainDataService

    {

    }

 

Agregue un método de prueba “HelloWorld

       public string HelloWorld()

        {

            return “Hello World!!!”;

        }
Registre el “MainDataService” en la clase “Startup” en el método “ConfigureServices(IServiceCollection services)

           services.AddTransient<IMainDataService, MainDataService>();

 

Probado en: .net Core 2.0

#VisualStudio – Evitar que un proyecto en “SDK Style Project” agregue el nombre del framework al final de la ruta de salida

Agregue en el archivo del proyecto la siguiente propiedad:

 

 <PropertyGroup>

    <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

  </PropertyGroup>

 

Probado en: Visual Studio 2017/2019 con net 4.7.2