- Vou ir direto ao ponto, é possível criar uma classe de
insert
ou update
no C# que seja genérica?
- No caso, eu posso enviar qualquer tipo de objeto e ela salvaria ou faria
update
no banco?
Mais ou menos como o Hibernate
faz no Java, porém eu entendo que existam os mapeamentos que permitem isso.
Atualmente estou fazendo algo do tipo
public int Salvar(Pais pais)
{
MySqlCommand comando = null;
try
{
AbrirConexao();
comando = new MySqlCommand("INSERT INTO pais (idpais, nome, sigla) VALUES(@idpais, @nome, @sigla)", conexao);
comando.Parameters.AddWithValue("@idpais", pais.idpais);
comando.Parameters.AddWithValue("@nome", pais.nome);
comando.Parameters.AddWithValue("@sigla", pais.sigla);
return comando.ExecuteNonQuery();
}
catch (Exception erro)
{
throw erro;
}
finally
{
FecharConexao();
}
}
Bom, só realmente para tirar dúvida, e se caso alguém tenha alguma sugestão eu agradeço.
Pode usar o Entity Framework ou NHibernate (mais pesado como o do Java).
1 curtida
É mais rápido fazer tudo a mão, ou aprender a usar o Entity Framework ? Confesso que já ouvi falar mas não conheço de fato.
Pra o que voce perguntou sim, facilita em cruds. Mas eu prefiro acima de tudo ter o controle do SQL, não gosto de soluções mais amarradas a modelo OO como Entity Framework e NHibernate. Prefiro o Dapper pra .NET e o JDBC Template pra Java, são mais leves inclusive.
O ideal é que você aprenda a fazer primeiramente na mão, porque as camadas de persistência é uma camada acima das implementações de IDbConnection
, IDbCommand
e assim por diante, então aquele código da sua pergunta é perfeito porque sabe fazer um cadastro com a camada padrão de acesso aos bancos .NET.
Depois desse conhecimento pode partir para Entity Framework
principalmente a versão Core
se estiver trabalhando com ASPNET Core porque a mesma foi reescrita do Zero, apesar que a versão 6 também foi muito atualizado e está com bom aspecto de desempenho.
Existem pessoas que não gostam de trabalhar com Entity Framework
ou qualquer camada Full ORM
por achar que é pesado, que esconde a geração da SQL e isso não é verdade, nos conseguimos ver tudo o que ele faz, e se estiver construindo alguma SQL não performática o programador consegue arrumar.
A maioria dos programadores fazem o seguinte a camada ORM para Criar, Atualizar e Excluir registros e Micro ORM para desenvolver SQL Complexas, acham que isso ajudam e muito o desempenho.
Sua pergunta?
Sim é possível criar uma classe Genérica para suas operações, vai escrever menos código, mas, acho que acaba escrevendo o número do SQL do mesmo jeito não tem por onde escapar.
Se você procura velocidade faça com Entity Framework
e procure sempre observar o que ele executa de SQL na hora de SQL complexas o resto não muda muito e o desempenho é muito satisfatório.
Ok, entendi perfeitamente. Sua resposta foi muito esclarecedora.
Obrigado