示例#1
0
        private DbTable <T> CreateTempTableInstance <T>(T _)
            where T : Model, new()
        {
            var tableName = AssignTempTableName(_);

            return(DbTable <T> .CreateTemp(_, this, tableName));
        }
示例#2
0
        private DbTable <T> CreateTempTableInstance <T>(T _)
            where T : class, IEntity, new()
        {
            var tableName = AssignTempTableName(_.Model);

            return(DbTable <T> .CreateTemp(_, this, tableName));
        }
示例#3
0
        internal static void MockSequentialKeyTempTable <T>(this DbQuery <T> dbQuery)
            where T : Model, new()
        {
            var sequentialKey  = new SequentialKey(dbQuery.Model);
            var dbSession      = dbQuery.DbSession;
            var tempTableName  = dbSession.AssignTempTableName(sequentialKey);
            var queryStatement = dbQuery.QueryStatement;

            queryStatement.SequentialKeyTempTable = DbTable <SequentialKey> .CreateTemp(sequentialKey, dbQuery.DbSession, tempTableName);

            queryStatement.SequentialKeyTempTable.InitialRowCount = 1;  // this value (zero or non-zero) determines whether child query should be created.
        }
示例#4
0
        internal static DbTable <TChild> MockCreateChild <T, TChild>(this DbTable <T> dbTable, Action <TChild> initializer, Func <T, TChild> getChildModel)
            where T : Model, new()
            where TChild : Model, new()
        {
            var model = dbTable.VerifyCreateChild(initializer, getChildModel);

            var dbSession = dbTable.DbSession;
            var name      = dbSession.AssignTempTableName(model);
            var result    = DbTable <TChild> .CreateTemp(model, dbSession, name);

            return(result);
        }
示例#5
0
        private async Task <DbTable <T> > ToTempTableAsync <T>(T model, DbSession dbSession, CancellationToken cancellationToken)
            where T : Model, new()
        {
            Debug.Assert(model == this.Model);
            Debug.Assert(model.DataSource == null);
            var name   = dbSession.AssignTempTableName(model);
            var result = DbTable <T> .CreateTemp(model, dbSession, name);

            await dbSession.CreateTableAsync(model, true, cancellationToken);

            result.InitialRowCount = await dbSession.InsertAsync(BuildToTempTableStatement(), cancellationToken);

            return(result);
        }