Exemplo n.º 1
0
 /// <summary>
 /// Atualiza os dados to tipo <see cref="IORM{T}"/> que e passado no parâmetro
 /// </summary>
 /// <param name="item">objeto de classe que implementa e interface <see cref="IORM{T}"/></param>
 /// <returns>retorna um valor numérico indicando o resultado da operação</returns>
 public int Update(IORM <T> item)
 {
     return(ConnectionException <int> .AsyncCheck(() => {
         using (var connection = OpenDB()) {
             connection.Open();
             DataBaseLog?.Invoke(this, new ConnectionEventArgs <T>($"atualização de dados: {item.GetThis()}"));
             if (UpdateString == null)
             {
                 UpdateString = item.GetThis().QueryUpdate();
             }
             return connection.Execute(UpdateString, item);
         }
     }));
 }
Exemplo n.º 2
0
 /// <summary>
 /// Adiciona um elemento do tipo <see cref="IORM{T}"/> no banco de dados
 /// </summary>
 /// <param name="item">objeto de classe que implementa e interface <see cref="IORM{T}"/></param>
 /// <returns>retorna um valor numérico indicando o resultado da operação</returns>
 public int?Add(IORM <T> item)
 {
     return(ConnectionException <int> .AsyncCheck(() => {
         using (var connection = OpenDB()) {
             connection.Open();
             DataBaseLog?.Invoke(this, new ConnectionEventArgs <T>($"inserção do registro: {item.GetThis()}"));
             if (AddString == null)
             {
                 AddString = item.GetThis().QueryAdd();
             }
             return connection.Execute(AddString, item);
         }
     }));
 }
Exemplo n.º 3
0
 /// <summary>
 /// Exevcuta um comando sql apartir de um arquivo
 /// </summary>
 /// <param name="url">Diretorio do arquivo</param>
 public void OfTheFile(string url)
 {
     try {
         using (Stream stream = File.Open($"{url}", FileMode.Open))
             using (StreamReader reader = new StreamReader(stream)) {
                 using (var connection = OpenDB()) {
                     connection.Open();
                     connection.Execute(reader.ReadToEnd());
                 }
             }
     } catch (IOException e) {
         DataBaseLog?.Invoke(this, new ConnectionEventArgs <T>($"{e.Message}"));
     } catch (Exception e) {
         DataBaseLog?.Invoke(this, new ConnectionEventArgs <T>($"{e.Message}"));
     }
 }
Exemplo n.º 4
0
 /// <summary>
 /// Remove um elemento do tipo <see cref="IORM{T}"/> do banco de dados
 /// </summary>
 /// <param name="Id">número de identificação</param>
 /// <returns>retorna um valor numérico indicando o resultado da operação</returns>
 public int Remove(int Id)
 {
     if (!(Activator.CreateInstance <T>() is IORM <T>))
     {
         throw new ArgumentException("class not implement interface IBean");
     }
     return(ConnectionException <int> .AsyncCheck(() => {
         using (var connection = OpenDB()) {
             connection.Open();
             DataBaseLog?.Invoke(this, new ConnectionEventArgs <T>($"remoção do registro: {Id}"));
             if (RemoveString == null)
             {
                 RemoveString = Activator.CreateInstance <T>().QueryRemove();
             }
             return connection.Execute(RemoveString, new { id = Id });
         }
     }));
 }
Exemplo n.º 5
0
 /// <summary>
 /// Pesquisa um elemento do tipo <see cref="IORM{T}"/> no banco de dados com base em seu Id
 /// </summary>
 /// <param name="Id">número de indentificação</param>
 /// <returns>retorna um tipo <see cref="IORM{T}"/></returns>
 public T FindById(int Id)
 {
     return(ConnectionException <T> .AsyncCheck((Func <T>)(() => {
         if (!(Activator.CreateInstance <T>() is IORM <T>))
         {
             throw new ArgumentException("class not implement interface IBean");
         }
         using (var connection = OpenDB()) {
             connection.Open();
             DataBaseLog?.Invoke(this, new ConnectionEventArgs <T>($"registro pesquisado: {Id}"));
             if (FindByIdString == null)
             {
                 FindByIdString = Activator.CreateInstance <T>().QueryFindById();
             }
             return ReflectionConvert(connection.Query(FindByIdString, new { id = Id }).FirstOrDefault());
         }
     })));
 }
Exemplo n.º 6
0
 /// <summary>
 /// Seleciona todos elementos do tipo <see cref="IORM{T}"/> no banco de dados
 /// </summary>
 /// <returns>retorna um lista de elementos <see cref="IORM{T}"/></returns>
 public List <T> FindAll()
 {
     return(ConnectionException <T> .AsyncCheck(() => {
         if (!(Activator.CreateInstance <T>() is IORM <T>))
         {
             throw new ArgumentException("class not implement interface IBean");
         }
         using (var connection = OpenDB()) {
             connection.Open();
             DataBaseLog?.Invoke(this, new ConnectionEventArgs <T>("listagem de dados"));
             if (FindAllString == null)
             {
                 FindAllString = Activator.CreateInstance <T>().QueryFindAll();
             }
             return ReflectionConvertList(connection.Query(FindAllString));
         }
     }));
 }
Exemplo n.º 7
0
 /// <summary>
 /// Realiza operacoes customizadas no banco de dados
 /// </summary>
 /// <returns>Retorna o objeto resultante da operacao</returns>
 /// <param name="obj">Dados de objetos para serem verificados no banco de daods</param>
 public object Custom(object obj = null)
 {
     try {
         using (var connection = OpenDB()) {
             connection.Open();
             DataBaseLog?.Invoke(this, new ConnectionEventArgs <T>($"execucao avancada"));
             if (CustomString != null && obj != null)
             {
                 return(connection.Query <object>(CustomString, obj));
             }
             else if (CustomString != null)
             {
                 return(connection.Query <object>(CustomString));
             }
             throw new ArgumentNullException($"referencia nula fornecida {nameof(obj)} ou {nameof(CustomString)}");
         }
     } catch (Exception e) {
         DataBaseLog?.Invoke(this, new ConnectionEventArgs <T>($"{e.Message}"));
     }
     return(null);
 }