/// <summary>An OrmConnection method that inserts an only.</summary> /// <typeparam name="T">Generic type parameter.</typeparam> /// <param name="obj"> The object.</param> /// <param name="onlyFields">The only fields.</param> public async Task <int> InsertOnlyAsync <T, TKey>(T obj, Expression <Func <T, TKey> > onlyFields) where T : new() { var insertStatement = new TypedInsertStatement <T>(DialectProvider); insertStatement.Values(obj, onlyFields); return(await this.ExecuteScalarAsync <int>(DialectProvider.ToInsertStatement(insertStatement.Statement, CommandFlags.None))); }
/// <summary> /// Insert an object in the database /// </summary> /// <param name="obj">The object to insert</param> /// <typeparam name="T"></typeparam> /// <returns></returns> /// <exception cref="OrmException"></exception> public Task <TKey> InsertAsync <TKey, T>(T obj) { try { var insertStatement = new TypedInsertStatement <T>(DialectProvider); insertStatement.Values(obj, Array.Empty <string>()); var commandDefinition = DialectProvider.ToInsertStatement(insertStatement.Statement, CommandFlags.None); return(this.ExecuteScalarAsync <TKey>(commandDefinition)); } catch (Exception e) { throw new OrmException(e.Message, e); } }
/// <summary> /// Insert an object in the database /// </summary> /// <param name="obj">The object to insert</param> /// <typeparam name="T"></typeparam> /// <returns></returns> /// <exception cref="OrmException"></exception> public async Task <int> InsertAsync <T>(T obj) { try { var insertStatement = new TypedInsertStatement <T>(DialectProvider); insertStatement.Values(obj, new List <string>()); return(await this.ExecuteScalarAsync <int>( DialectProvider.ToInsertStatement(insertStatement.Statement, CommandFlags.None))); } catch (Exception e) { throw new OrmException(e.Message, e); } }
/// <summary>An OrmConnection method that inserts all.</summary> /// <typeparam name="T">Generic type parameter.</typeparam> /// <param name="objs"> The objects.</param> public async Task <int> InsertAsync <T>(IEnumerable <T> objs) { var count = 0; foreach (var t in objs) { //TODO: Optimize this only generating query once and use different parameters var insertStatement = new TypedInsertStatement <T>(DialectProvider); insertStatement.Values(t, new List <string>()); await this.ExecuteScalarAsync <int>(DialectProvider.ToInsertStatement(insertStatement.Statement, CommandFlags.None)); count++; } return(count); }
/// <summary> /// Insert multiple objects at once in the database /// </summary> /// <param name="objs">The objects to insert</param> /// <typeparam name="T"></typeparam> /// <returns></returns> public async Task <IEnumerable <int> > InsertAsync <T>(IEnumerable <T> objs) { if (objs == null) { throw new ArgumentNullException(nameof(objs)); } List <int> result = new List <int>(); foreach (var t in objs) { //TODO: Optimize this only generating query once and use different parameters var insertStatement = new TypedInsertStatement <T>(DialectProvider); insertStatement.Values(t, new List <string>()); result.Add(await this.ExecuteScalarAsync <int>( DialectProvider.ToInsertStatement(insertStatement.Statement, CommandFlags.None))); } return(result); }