Conectar una API .NET con SQL Server es uno de los pasos más importantes cuando quieres llevar tu proyecto de un entorno de pruebas a un escenario real. Aquí aprendes a configurar la conexión, instalar los paquetes necesarios y ejecutar migraciones con Entity Framework Core para que tu base de datos quede lista en minutos.
¿Por qué usar SQL Server en proyectos .NET?
SQL Server es el motor creado por Microsoft y, por eso, es altamente compatible con el ecosistema .NET. Aun así, en los últimos años PostgreSQL ha ganado terreno como alternativa open source y ligera, sobre todo en stacks que combinan un frontend en Angular o React, APIs en .NET y una base de datos relacional.
En este recorrido trabajamos con SQL Server porque la integración con las herramientas de Microsoft es directa y te permite enfocarte en la lógica de tu API.
¿Qué es Entity Framework Core? Es el ORM oficial de .NET que traduce tus clases de C# en tablas de base de datos y te permite ejecutar consultas sin escribir SQL manual.
¿Qué paquetes NuGet necesito instalar?
Antes de tocar el código, tienes que sumar las bibliotecas que conectan tu proyecto con SQL Server [01:00]. Desde el gestor de NuGet busca Entity Framework Core e instala estos dos paquetes clave.
- Microsoft.EntityFrameworkCore.SqlServer: el proveedor que permite a Entity Framework hablar con SQL Server.
- Microsoft.EntityFrameworkCore.Tools: imprescindible para ejecutar comandos de migraciones desde la consola.
Además, necesitas instalar la herramienta global del CLI con este comando [01:30]:
bash
dotnet tool install --global dotnet-ef
Si ya la tienes, verás un mensaje indicándolo. Si es tu primera vez, te confirmará la instalación. Asegúrate de que dotnet ef responda correctamente antes de continuar.
¿Dónde se configura el connection string en .NET?
La buena práctica es agregar la cadena de conexión dentro del archivo appsettings.json, en una sección llamada ConnectionStrings [02:30]. .NET reconoce ese nombre de forma automática y lo trata como el lugar oficial para guardar credenciales de base de datos.
Un ejemplo de configuración se vería así:
"ConnectionStrings": {
"SQLServerConnection": "Server=localhost;Database=curso_apis_db;User Id=SA;Password=tu_password;TrustServerCertificate=False;"
}
Cada parámetro cumple una función específica. Server indica el servidor, Database la base de datos, User Id y Password las credenciales, y TrustServerCertificate controla la validación del certificado. En producción, lo recomendable es crear un usuario con permisos limitados en lugar de usar SA, para mantener un nivel alto de seguridad.
¿Cómo conecto el DbContext con SQL Server?
En el archivo Program.cs reemplazas la configuración de UseInMemoryDatabase por UseSqlServer, leyendo la cadena desde el Configuration [03:30]:
csharp
builder.Services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer(
builder.Configuration.GetConnectionString("SQLServerConnection")));
Si el método UseSqlServer no aparece en el autocompletado, es señal de que el paquete de SQL Server no quedó bien instalado.
¿Cómo creo migraciones con Entity Framework Core?
Las migraciones son el esquema inicial de tu base de datos traducido a código. Te permiten versionar la estructura y recrearla cuando lo necesites.
Para generar la primera migración usas este comando [04:20]:
bash
dotnet ef migrations add InitialCreate
Si ves un error de compilación, compila el proyecto manualmente y vuelve a ejecutar el comando. Tras el éxito aparecerá una carpeta Migrations con dos archivos importantes.
- El archivo de la migración con la fecha y el nombre que le diste.
- El snapshot, que mantiene la copia más actualizada del esquema.
¿Qué hace el snapshot en Entity Framework? Guarda el estado actual del modelo para que las próximas migraciones sepan qué cambió y generen solo las diferencias.
Después, aplica la migración a tu base de datos real [05:20]:
bash
dotnet ef database update
Si recibes el mensaje Done, la base de datos quedó creada con todas las tablas configuradas, aunque vacía de registros.
¿Cómo verifico que la API está guardando en SQL Server?
Ejecuta el proyecto y abre Swagger. Autentícate primero con tus credenciales (en el ejemplo, usuario Platzi y contraseña 12345) y prueba los endpoints de creación [06:10].
Un detalle clave: ya no debes enviar el Id manualmente, porque ahora la base de datos lo genera de forma automática. Tampoco necesitas mandar el campo Completado en una tarea, ya que tiene un valor por defecto de False.
Después de crear un usuario y una tarea, abre SQL Server Management Studio, refresca la lista de bases de datos y busca curso_apis_db. Dentro encontrarás las tablas Usuarios y Tareas, cada una con el registro que acabas de insertar [07:30].
Como reto, valida que todos los endpoints, incluidos update y delete, funcionen correctamente con la base de datos real. Si tienes dudas o quieres compartir cómo te fue con tu propia conexión, déjalo en los comentarios.