Esempio n. 1
0
        public static int BulkInsertSql <T>(this IDbConnection con, IEnumerable <T> dataList, int linesPerBatch = 1000, int timeout = 0, DMLOptions options = null)
        {
            if (!dataList.HasAny())
            {
                return(0);
            }
            if (con is SqlConnection)
            {
                using (var bulkCopy = new SqlBulkCopy(con as SqlConnection))
                {
                    bulkCopy.DestinationTableName = Statements <T> .Table(options);

                    bulkCopy.BatchSize       = linesPerBatch;
                    bulkCopy.BulkCopyTimeout = timeout;

                    var table = typeof(T).GetTable4BulkCopy(bulkCopy);
                    table.SetRows(dataList);

                    if (con.State != ConnectionState.Open)
                    {
                        con.Open();
                    }
                    bulkCopy.WriteToServer(table);
                }
            }
            return(dataList.Count());
        }
Esempio n. 2
0
        public static int BulkInsert <T>(this IDbConnection con, IEnumerable <T> dataList, IEnumerable <PropertyInfo> columns, int linesPerBatch, int timeout, DMLOptions options)
        {
            if (!(con is SqlConnection))
            {
                throw new Exception("invalid connection, SqlConnection expected");
            }
            if (!dataList.HasAny())
            {
                return(0);
            }
            var curOptions = options ?? SqlDefaultOptions;

            using (var bulkCopy = new SqlBulkCopy(con as SqlConnection))
            {
                bulkCopy.DestinationTableName = Statements <T> .Table(curOptions);

                bulkCopy.BatchSize       = linesPerBatch;
                bulkCopy.BulkCopyTimeout = timeout;

                var table = typeof(T).GetTable4BulkCopy(bulkCopy, columns);
                table.SetRows(dataList, columns);

                if (con.State != ConnectionState.Open)
                {
                    con.Open();
                }
                bulkCopy.WriteToServer(table);
            }

            return(dataList.Count());
        }