Пример #1
0
        /// <summary>
        /// 创建通过主键删除的语句片段。
        /// </summary>
        /// <param name="data">内容对象。</param>
        /// <param name="table">删除表的元数据。</param>
        /// <param name="name">指定名称。</param>
        /// <returns>语句片段。</returns>
        internal static DeleteFragment DeleteByKeys(this ContentBase data, TableMetadata table, DbName name = null)
        {
            var delete = new DeleteFragment(data.GenerateContext, table, name);

            delete.Where = delete.Target.JoinCondition(data.CommitObject,
                                                       data.UnionConcurrencyMembers(table, table.Keys));
            return(delete);
        }
Пример #2
0
        internal static UpdateFragment UpdateByTemptable(this ContentBase data, CommitUnitBase unit, SourceFragment current, DbName name = null)
        {
            var context  = data.GenerateContext;
            var metadata = unit.Table;
            var update   = new UpdateFragment(context, metadata, name);

            update.AddSource(update.Target, current);
            data.SetCommitMembers(update, unit, current);
            update.Target.Join(current, data.UnionConcurrencyMembers(metadata, metadata.Keys));
            return(update);
        }
Пример #3
0
        internal static UpdateFragment UpdateByKeys(this ContentBase data, CommitUnitBase unit, DbName name = null)
        {
            var context  = data.GenerateContext;
            var metadata = unit.Table;
            var update   = new UpdateFragment(context, metadata, name);

            data.CommitObject.Parent = update;
            data.SetCommitMembers(update, unit);
            update.Where = update.Target.JoinCondition(data.CommitObject, data.UnionConcurrencyMembers(metadata, metadata.Keys));
            return(update);
        }
Пример #4
0
        /// <summary>
        /// 创建通过临时博删除的语句片段。
        /// </summary>
        /// <param name="data">内容对象。</param>
        /// <param name="metadata">删除表的元数据。</param>
        /// <param name="temptable">临时表。</param>
        /// <param name="name">指定名称。</param>
        /// <returns>语句片段。</returns>
        internal static DeleteFragment DeleteByTemptable(this ContentBase data
                                                         , TableMetadata metadata, TemporaryTableFragment temptable, DbName name = null)
        {
            var context          = data.GenerateContext;
            var filterMembers    = data.UnionConcurrencyMembers(metadata, metadata.Keys);
            var delete           = new DeleteFragment(context, metadata);
            var current          = delete.Target;
            var currenttemptable = new TemporaryTableFragment(context, filterMembers, temptable.Name);

            delete.AddSource(currenttemptable);
            current.Join(currenttemptable, filterMembers);
            return(delete);
        }