CRUD

Alejandro Cernuda



Create, read, update y delete (CRUD) Estas são as operações básicas executadas em um conjunto de dados. São também os mais comuns. Todos os métodos da biblioteca existem em suas versões síncronas e assíncronas. Sempre que possível, recomendamos a utilização deste último.

Exemplos simples de leitura e escrita

publicasync TaskTestInsertAsyn(User user)

{

    DataGather dg = DataGather.GetInstance(ConnectionString);

await dg.InsertAsync(user);

}

Como você pode ver, se houver uma tabela chamada Usuário no banco de dados e ela tiver os mesmos campos que o objeto User e também uma chave primária, não será necessário especificar mais nada.

public User: IAR

{

...

}

E maisse a classe User herdar do IAR, uma classe abstrata criada na biblioteca para fornecer alguns dos campos mais comuns na tabela e que proporcionam conforto ao trabalhar.

 

///

/// When inheriting from it, any class in the database will have fields normally used in a sql Table; as well as its initialization.

///

publicabstractclassIAR

{

publicint Id { get; set; }

///

/// This property will be initialized as true.

///

publicbool Active { get; set; }

///

/// This property will be initialized with the current date

///

public DateTime RowUpdateDate { get; set; }

publicIAR()

    {

        Active = true;

        RowUpdateDate = DateTime.Now;

}

}

Exemplo de leitura

publicasync Task<User> GetAsync()

{

return (await dg.GetAsync<User>()).ToList();

}

Também podemos excluir registros de forma simples, desde que a tabela tenha uma chave primária.

await dg.DeleteAsync(user)

await dg.UpdateAsync(user);

Exemplo de uso para obter dados de várias tabelas

Na vida real, é difícil estruturar os dados para que haja sempre uma tabela ou visualização para a classe que precisamos no código. SQLClientCoreTool pode trabalhar com essa incongruência. O exemplo a seguir requer trazer todos os dados da tabela PostGroup e também o idioma da tabela Langs. Observe que, em vez de uma consulta en string, poderíamos passar o nome de um procedimento armazenado e ter o código SQl no próprio servidor.

  public class PostGroupView

    {

        public int Id { get;set; }

        public string Title { get;set; }

        public string Link { get;set; }

        public string Lang { get;set; }

    }

  public static List<PostGroupView?> GetAllBySiteId(int siteId)

        {

            string query = GetAllBySiteIdQuery(siteId);

            DataGatherdg = DataGather.GetInstance(SiteConst.ConnectionString);

            return dg.Get<PostGroupView>(query, false).ToList();

        }

 

  private static string GetAllBySiteIdQuery(int siteId)

        {

            StringBuilder sb = new StringBuilder();

            sb.AppendLine($"select distinct pg.*, l.Lang from PostsGroup pg  ");

            sb.AppendLine($"join PostsMeta pm on pg.Id = pm.PostsGroupId and pg.Active = 1 ");

            sb.AppendLine($"join Posts p on pm.PostId = p.Id and p.Active = 1 ");

            sb.AppendLine($"join Langs l on pm.LanguageId= l.Id ");

            sb.AppendLine($"where p.SiteId = {siteId} ");

            return sb.ToString();

        }