c_ado_backup_tool sobre 2026

Azure DevOps backup tool

Hace unos meses me empezó a preocupar algo evidente y sin embargo invisible: que sucede si tu código vive solo en Azure DevOps. Repositorios, pipelines, wikis. Si mañana Microsoft tuviera un mal día — o nuestra cuenta uno peor — perderíamos años de trabajo. Y aunque Microsoft tiene SLAs estupendos, «tener una copia de tu propio código en tu propia casa» no es paranoia: es higiene básica.

Leer más
c_azure_devops_agent_local sobre 2025

Migrando un pipeline de Azure DevOps a un agent self-hosted: cuatro lecciones que la nube te oculta

Al pasar un pipeline Microsoft-hosted a un agent self-hosted en un NAS, dos tests que llevaban meses verdes empezaron a parpadear por jitter del scheduler. La migración funcionó, pero por el camino salieron a la luz cuatro problemas latentes que el hardware dedicado de Microsoft enmascaraba. Este post los documenta con ejemplos para que no te cuesten lo mismo.

Leer más
DbContext + (Identity + Entity Framework) + EF Core Power Tools

DbContext + (Identity + Entity Framework) + EF Core Power Tools

Vamos a intentar explicar un escenario de desarrollo en Visual Studio, en un modelo de diseño que parte de base de datos existente, SQL Server en este caso (Database first), en el cual integramos la autenticación mediante ASP.NET Core Identity con las tablas ya existentes relacionadas con lo usuarios de Identity; todo ello utilizando un único DbContext

Leer más
TIP: resetear contraseña con ASP.NET Identity

TIP: resetear contraseña con ASP.NET Identity

En entornos .NET Framework debemos utilizar las implementaciones de OWIN / Katana de manera adicional, en .NET Core (o el nombre que acabe teniendo) no es necesario al tratarse de una evolución de las librerías Microsoft.Owin.*

Un ejemplo sencillo síncrono para realizar un cambio de contraseña:

using Microsoft.Owin.Security.DataProtection;
using Microsoft.Owin.Security;
using Microsoft.AspNet.Identity.Owin;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
...

var userStore = new UserStore<IdentityUser>();
var userManager = new UserManager<IdentityUser>(userStore);
var user = userManager.FindByName(MyUserNameTextBox.Text);

var provider = new DpapiDataProtectionProvider(System.Web.Hosting.HostingEnvironment.ApplicationHost.GetSiteName());
userManager.UserTokenProvider = (IUserTokenProvider<IdentityUser, string>)(new DataProtectorTokenProvider<IdentityUser, string>(provider.Create("UserToken")) as IUserTokenProvider<IdentityUser, string>);

var token = userManager.GeneratePasswordResetToken(user.Id);
var result = userManager.ResetPassword(user.Id, token, MyPasswordTextBox.Text);
EF6 vs. EF Core: modelo de datos

EF6 vs. EF Core: modelo de datos

Cuando hablamos de Entity Famework 6 «clásico» debemos tener en cuenta que su versión 1.0 apareció en 2008 y la última versión corresponde con la 6.4.4 lanzada el 15 de mayo de 2020. Todo los ORM (Object-Relational mapping), como también lo son NHibernate ó Dapper, facilitan una capa intermedia entre las bases de datos relacionales y el modelo de objetos de nuestra aplicación.

Dentro de la hoja de ruta de Microsoft para unificar tecnología .NET tambien afecta a este ORM, la nueva versión EF Core es una versión más ligera, extensible, modular y multiplataforma aunque algunas características previas todavía están pendientes de valorar su integración.

Leer más