Avatar ·

Correspondência de tipos de dados C# e SQL Server: guia completo

Olá a todos! Sou um desenvolvedor C# iniciante, escrevendo um pequeno aplicativo para trabalhar com banco de dados SQL Server via Entity Framework. Encontrei um problema: não consigo entender exatamente quais tipos de dados em C# correspondem aos tipos no SQL Server.

Por exemplo, tenho uma tabela com colunas:

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

Em C#, estou criando um modelo:

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

Mas existem muitos outros tipos: BIGINT, SMALLINT, TINYINT, FLOAT, REAL, MONEY, UNIQUEIDENTIFIER, VARBI