예제 #1
0
        public TEntity Insert(IStorageDbConnection conn, TEntity entityToInsert, IEnumerable <Expression <Func <TEntity, object> > > ignoredFields, AutoIncrementTransformer <TKey, TEntity> atf, IDbTransaction tr)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }
            if (entityToInsert == null)
            {
                throw new ArgumentNullException(nameof(entityToInsert));
            }

            var result = ConstructInsertSql(entityToInsert, ignoredFields, atf != null);

            conn.TextWriter.WriteSql(result.CommandText);

            if (atf == null)
            {
                conn.Execute(result.CommandText, result.Parameters, tr);
            }
            else
            {
                var id = (TKey)Convert.ChangeType(conn.QuerySingle(typeof(TKey), result.CommandText, result.Parameters, tr), typeof(TKey), CultureInfo.InvariantCulture);
                atf(id, entityToInsert);
            }

            return(entityToInsert);
        }
예제 #2
0
        public long Count(IStorageDbConnection conn, Expression <Func <TEntity, object> > member, WhereClauseResult whereClause, IDbTransaction tr)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }

            var result = ConstructCountSql(member, whereClause);

            conn.TextWriter.WriteSql(result.CommandText);
            return((long)Convert.ChangeType(conn.QuerySingle(typeof(long), result.CommandText, result.Parameters, tr), typeof(long), CultureInfo.InvariantCulture));
        }
예제 #3
0
        public bool Exists(IStorageDbConnection conn, WhereClauseResult whereClause, IDbTransaction tr)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }

            var result = ConstructExistsSql(whereClause);

            conn.TextWriter.WriteSql(result.CommandText);
            return((bool)Convert.ChangeType(conn.QuerySingle(typeof(int), result.CommandText, result.Parameters, tr), typeof(bool), CultureInfo.InvariantCulture));
        }