예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
        }