public async Task <TEntity> InsertAsync <TEntity>(TEntity item, IEnumerable <string> fieldsToInsert = null) where TEntity : class { var query = queryFactory.GetInsertQuery <TEntity>(fieldsToInsert); var identityColumn = queryFactory.GetTable <TEntity>().GetIdentityColumn(); if (identityColumn != null) { query += "; " + queryFactory.DialectQuery.IdentityQueryFormatSql; logger.LogDebug("InsertAsync query:{query} item:{@item}", query, item); var fieldId = await Conn.ExecuteScalarAsync(query, item, Tran); // Set Property Value var propertyColumn = identityColumn.GetPropertyInfo(); propertyColumn.SetValue(item, Convert.ChangeType(fieldId, propertyColumn.PropertyType)); } else { logger.LogDebug("InsertAsync query:{query} item:{@item}", query, item); await Conn.ExecuteAsync(query, item, Tran); } return(item); }
public async Task <TEntity> InsertAsync <TEntity>(TEntity item) where TEntity : ITableDto { var query = queryFactory.GetInsertQuery <TEntity>(); var identityColumn = queryFactory.GetTable <TEntity>().GetIdentityColumn(); if (identityColumn != null) { query += "; " + queryFactory.DialectQuery.IdentityQueryFormatSql; var fieldId = await uk.DbConnection.ExecuteScalarAsync(query, item, uk.DbTransaction); // Set Property Value var propertyColumn = identityColumn.GetPropertyInfo(); propertyColumn.SetValue(item, Convert.ChangeType(fieldId, propertyColumn.PropertyType)); } else { await uk.DbConnection.ExecuteAsync(query, item, uk.DbTransaction); } return(item); }
public void Test_table_config_builder() { var tablesFactory = new TableQueryFactory(Dialect.SQLite); tablesFactory.ConfigureTable <ProcessHistoryModel>("ProcessHistory", cfgTbl => { ProcessHistoryModel dto = cfgTbl.Table; cfgTbl.AddColumn(nameof(dto.Id), "ProcessHistoryId", false, true); cfgTbl.AddColumn(nameof(dto.StartProcessDateTime)); cfgTbl.AddColumn(nameof(dto.FinishProcessDateTime)); cfgTbl.AddColumn(nameof(dto.ProductSpecificationCode)); }); tablesFactory.ConfigureTable <InterruptionHistoryModel>("InterruptionHistory", cfgTbl => { InterruptionHistoryModel dto = cfgTbl.Table; cfgTbl.AddColumn(nameof(dto.Id), null, true, true); cfgTbl.AddColumn(nameof(dto.ProcessHistoryId)); cfgTbl.AddColumn(nameof(dto.StartDateTime)); cfgTbl.AddColumn(nameof(dto.EndDateTime)); }); tablesFactory.ConfigureTable <ProductSpecificationModel>("ProductSpecification", cfgTbl => { cfgTbl.AddColumn(c => c.Id, null, false, false); cfgTbl.AddColumn(c => c.Code); cfgTbl.AddColumn(c => c.StandarDuration); cfgTbl.AddColumn(c => c.CreatedAt, c => { c.IgnoreInsert = true; c.IgnoreUpdate = true; }); }); var res = tablesFactory.GetPagedListQuery <ProcessHistoryModel>(); res = tablesFactory.GetSingleQuery <ProcessHistoryModel>(); res = tablesFactory.GetDeleteQuery <ProcessHistoryModel>(); res = tablesFactory.GetUpdateQuery <ProcessHistoryModel>(); res = tablesFactory.GetUpdateQuery <ProductSpecificationModel>(); bool isIdentity; var res2 = tablesFactory.GetInsertQuery <ProcessHistoryModel>(); Console.WriteLine(res); }