コード例 #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 async Task <TEntity> InsertAsync(IStorageDbConnection conn, TEntity entityToInsert, IEnumerable <Expression <Func <TEntity, object> > > ignoredFields, AutoIncrementTransformer <TKey, TEntity> atf, IDbTransaction tr, CancellationToken cancellationToken)
        {
            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);
            var cmd = CreateDapperCmd(result.CommandText, result.Parameters, tr, cancellationToken);

            if (atf == null)
            {
                await conn.ExecuteAsync(cmd);
            }
            else
            {
                var id = (TKey)Convert.ChangeType(await conn.QuerySingleAsync(typeof(TKey), cmd), typeof(TKey), CultureInfo.InvariantCulture);
                atf(id, entityToInsert);
            }

            return(entityToInsert);
        }
コード例 #3
0
 public static Task <TEntity> InsertAsync <TKey, TEntity>(this INewEntityStore <TKey, TEntity> newStore, IStorageDbConnection conn, TEntity entityToInsert, AutoIncrementTransformer <TKey, TEntity> atf, IDbTransaction tr, CancellationToken cancellationToken)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (newStore == null)
     {
         throw new ArgumentNullException(nameof(newStore));
     }
     return(newStore.InsertAsync(conn, entityToInsert, null, atf, tr, cancellationToken));
 }
コード例 #4
0
 public static Task <TEntity> InsertAsync <TKey, TEntity>(this INewEntityStore <TKey, TEntity> newStore, IStorageDbConnection conn, TEntity entityToInsert, IEnumerable <Expression <Func <TEntity, object> > > ignoredFields, AutoIncrementTransformer <TKey, TEntity> atf, IDbTransaction tr)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (newStore == null)
     {
         throw new ArgumentNullException(nameof(newStore));
     }
     return(newStore.InsertAsync(conn, entityToInsert, ignoredFields, atf, tr, default(CancellationToken)));
 }
コード例 #5
0
 public static TEntity Insert <TKey, TEntity>(this INewEntityStore <TKey, TEntity> newStore, IStorageDbConnection conn, TEntity entityToInsert, IEnumerable <Expression <Func <TEntity, object> > > ignoredFields, AutoIncrementTransformer <TKey, TEntity> atf)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (newStore == null)
     {
         throw new ArgumentNullException(nameof(newStore));
     }
     return(newStore.Insert(conn, entityToInsert, ignoredFields, atf, null));
 }