Skip to content

Latest commit

 

History

History
47 lines (41 loc) · 1.93 KB

File metadata and controls

47 lines (41 loc) · 1.93 KB

ORM

Mapeamento objeto-relacional (ou ORM, do inglês: Object-relational mapping) é uma técnica de desenvolvimento utilizada para reduzir a impedância da programação orientada aos objetos utilizando bancos de dados relacionais. As tabelas do banco de dados são representadas através de classes e os registros de cada tabela são representados como instâncias das classes correspondentes. wikipédia

Por exemplo podemos fazer um mapeamento objeto - relacional, manualmente como ilustrado abaixo:

public sealed class Category
{
    public Category(int id, string name)
    {
        Id = id;
        Name = name;
    }
    public int Id {get; set;}
    public string Name {get; set;}
}

public IEnumerable<Category> GetAll()
{
    using (SqlConnection connection = new SqlConnection(stringConnection))
    {
        SqlCommand command = new SqlCommand(
          "SELECT CategoryID, CategoryName FROM Categories;",
          connection);
        connection.Open();

        SqlDataReader reader = command.ExecuteReader();
        List<Category> categories = new List<Category>();
        if (reader.HasRows)
        {
            while (reader.Read())
            {
                categories.Add(
                    new Category(
                        reader.GetInt32(0),
                        reader.GetString(1)));
            }
        }        
        reader.Close();
        return categories;
    }
}

Um ponto forte das ferramentas de ORM existentes é aumentar a produtividade dos desenvolvedores, abstraindo tarefas manuais de "tradução" na leitura/escrita de dados. Então frameworks como EF e NHibernate se destacam por abstrair quase que totalmente o uso de SQL pelos desenvolvedores. Mas, acabam pecando no que tange performance e ai frameworks como Dapper se destacam.