USE [DatabaseName]
GO
CREATE SCHEMA [SchemaName] AUTHORIZATION [dbo]
Tested on: SQLServer 2017
USE [DatabaseName]
GO
CREATE SCHEMA [SchemaName] AUTHORIZATION [dbo]
Tested on: SQLServer 2017
Go from “2013-10-20” to “20131020”
long n = Int64.Parse (DateTime.Now.ToString (“yyyymmdd”));
Tested on: Net framework 4.5
DateTime date1 = new DateTime(1970, 1, 9, 0, 0, 00);
DateTime date2 = DateTime.Now;
TimeSpan timeElapsed = new TimeSpan();
timeElapsed = date2 – date1;
Tested on: Net 4,7
With Cast
SELECT CAST(GETDATE() AS TIME) [HORA]
Tested on: SQLServer 2017
With Convert
SELECT CONVERT(VARCHAR(8),GETDATE(),108) [HORA]
Tested on: SQLServer 2017
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
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
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
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
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