Пример #1
0
        /// <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>(T obj, Action <TypedInsertStatement <T> > statement) where T : new()
        {
            var insertStatement = new TypedInsertStatement <T>(DialectProvider);

            statement(insertStatement);

            return(await this.ExecuteScalarAsync <int>(DialectProvider.ToInsertStatement(insertStatement.Statement, CommandFlags.None)));
        }
Пример #2
0
        /// <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);
     }
 }
Пример #4
0
        /// <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);
            }
        }
Пример #5
0
        /// <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);
        }
Пример #6
0
        /// <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);
        }