Avatar ·

Correspondencia de tipos de datos C# y SQL Server: guía completa

¡Hola a todos! Soy un desarrollador C# principiante, estoy escribiendo una pequeña aplicación para trabajar con una base de datos SQL Server a través de Entity Framework. Me encontré con un problema: no puedo entender exactamente qué tipos de datos en C# corresponden a los tipos en SQL Server.

Por ejemplo, tengo una tabla con columnas:

CREATE TABLE Users (
    Id INT PRIMARY KEY,
    Name NVARCHAR(100),
    Salary DECIMAL(18,2),
    IsActive BIT,
    CreatedAt DATETIME2
);

En C# creo un modelo:

public class User
{
    public int Id { get; set; }           // INT -> int, aquí parece claro
    public string Name { get; set; }      // NVARCHAR -> string, también claro
    public decimal Salary { get; set; }   // DECIMAL -> decimal?
    public bool IsActive { get; set; }    // BIT -> bool?
    public DateTime CreatedAt { get; set; } // DATETIME2 -> DateTime?
}

Pero hay muchos otros tipos: BIGINT, SMALLINT, TINYINT, FLOAT, REAL, MONEY, UNIQUEIDENTIFIER, VARBI