Pessoal, tenho o seguinte método para fazer um update na base de dados :
(estou usando Entity FrameWork CodFirst)
public static classBandeiraVO updBandeiraDAO(classBandeiraVO pObjVo, int pCodigoBandeira, ref string errorController)
{
DbProviderFactory prov = DbProviderFactories.GetFactory(provider.classProvider.getProvider());
DbConnection conexao = prov.CreateConnection();
conexao.ConnectionString = provider.classProvider.getConnectionString();
classBandeiraVO objBandeiraVO = new classBandeiraVO();
using (var db = new classContext(conexao))
{
try
{
objBandeiraVO = (from p in db.t0160_bandeira where p.t0160_id_bandeira == pCodigoBandeira select p).First();
objBandeiraVO.t0160_id_bandeira = pObjVo.t0160_id_bandeira;
objBandeiraVO.t0160_grupo_conta = pObjVo.t0160_grupo_conta;
objBandeiraVO.t0160_id_plano_conta = pObjVo.t0160_id_plano_conta;
objBandeiraVO.t0160_id_fornecedor = pObjVo.t0160_id_fornecedor;
objBandeiraVO.t0160_id_conta_bancaria = pObjVo.t0160_id_conta_bancaria;
objBandeiraVO.t0160_descricao = pObjVo.t0160_descricao;
objBandeiraVO.t0160_tipo = pObjVo.t0160_tipo;
objBandeiraVO.t0160_operadora = pObjVo.t0160_operadora;
objBandeiraVO.t0160_qtde_parcelas = pObjVo.t0160_qtde_parcelas;
objBandeiraVO.t0160_tx_rotativo = pObjVo.t0160_tx_rotativo;
objBandeiraVO.t0160_tx_parcelado = pObjVo.t0160_tx_parcelado;
objBandeiraVO.t0160_dias_pgto = pObjVo.t0160_dias_pgto;
objBandeiraVO.t0160_dias_uteis = pObjVo.t0160_dias_uteis;
objBandeiraVO.t0160_status = pObjVo.t0160_status;
db.SaveChanges();
var dados = db.t0160_bandeira.Local.ToList();
objBandeiraVO = dados[0];
}
catch (Exception erro)
{
objBandeiraVO = null;
errorController = ("ERRO :" + erro.InnerException.InnerException.Message);
}
}
return objBandeiraVO;
}
Funciona perfeitamente, porem eu axo que poderia ser mais facil. no meu caso, eu instacio um objeto classBandeiraVO, e atribuo os campos (campo a campo) com os dados de um objeto (do mesmo tipo) que foi passado por parametro. Quando é basntante campo,
toma muito tempo.
ao inves de ficar atribuindo campo a campo, tentei o atribuir o objeto da seguinte forma:
...
classBandeiraVO objBandeiraVO = new classBandeiraVO();
using (var db = new classContext(conexao))
{
try
{
objBandeiraVO = (from p in db.t0160_bandeira where p.t0160_id_bandeira == pCodigoBandeira select p).First();
objBandeiraVO = pObjVo; //*** atribuindo o objeto e nao campo a campo
db.SaveChanges();
var dados = db.t0160_bandeira.Local.ToList();
objBandeiraVO = dados[0];
} ....
mas nao dá certo, o que vai para o banco é o objeto como foi consultado e nao o que foi atribuido.
alguem tem uma forma melhor de fazer isso ?
alessandre