public void SetIdValueTest() { using (var ctx = this.AutofacContainer.Resolve <IDbContextFactory>().NewContext()) { var entidade = new PessoaEndereco() { idpessoa = 1 }; EntidadeKey idIncrementado = Common.SqlBuilder.MapperTableKeys <PessoaEndereco> .GetAutoIncrementedKey(entidade, ctx); if (idIncrementado != null) { entidade.GetType().GetProperty(idIncrementado.NomeColuna).SetValue(entidade, idIncrementado.KeyValue); } Assert.Equal(2, entidade.id); } }
public virtual async Task <T> InsertAsync(T entidade, CancellationToken cancellationToken) { EntidadeKey idIncrementado = Common.SqlBuilder.MapperTableKeys <T> .GetAutoIncrementedKey(entidade, this.AttachedContext); if (idIncrementado != null) { entidade.GetType().GetProperty(idIncrementado.NomeColuna).SetValue(entidade, idIncrementado.KeyValue); } IDictionary <string, object> parametros = new Dictionary <string, object>(); string insertSql = Common.SqlBuilder.MapperEntitySql <T> .GetInsertSql(entidade, parametros); CommandDefinition cmd = new CommandDefinition(insertSql, parameters: parametros, transaction: this.AttachedContext.InnerTransaction, cancellationToken: cancellationToken); IList <EntidadeKey> keys = Common.SqlBuilder.MapperTableKeys <T> .GetWhereKeys(entidade); var result = await AttachedContext.InnerConnection.ExecuteScalarAsync(cmd); entidade.GetType().GetProperty(keys.Where(a => a.IsKey).First().NomeColuna).SetValue(entidade, result); return(entidade); }