コード例 #1
0
 /// <summary>
 /// 创值插入值语句。
 /// </summary>
 /// <param name="context">生成上下文。</param>
 /// <param name="target">插入目标语句。</param>
 /// <param name="source">用于插入的提交对象语句块。</param>
 /// <param name="data">插入的数据集合。</param>
 public InsertValueFragment(GenerateContext context, ISourceFragment target, CommitObjectFragment source, IEnumerable data)
     : base(context)
 {
     Target     = target;
     Data       = data;
     Source     = source;
     _KeyValues = new Dictionary <ColumnMetadata, ISqlFragment>();
 }
コード例 #2
0
 /// <summary>
 /// 创建数据对象。
 /// </summary>
 /// <param name="context">生成上下文。</param>
 /// <param name="operate">当前操作对象。</param>
 internal GenerateDataForCommit(GenerateContext context, DbObjectsOperateBase operate)
     : base(context, operate)
 {
     if (operate is IConcurrencyCheckOperate concur)
     {
         NeedConcurrencyCheck = concur.NeedCheck;
     }
     Table        = context.Metadata.Table(operate.ClrType);
     TableCount   = Table.InheritSets.Length + 1;
     Items        = operate;
     Loader       = CreateLoader(context, Table);
     CommitObject = new CommitObjectFragment(context, Loader);
 }
コード例 #3
0
 /// <summary>
 /// 创建提交内容对象。
 /// </summary>
 /// <param name="context"></param>
 /// <param name="operate"></param>
 internal ContentBase(GenerateContext context, DbObjectsOperateBase operate)
     : base(context, operate)
 {
     if (operate is IConcurrencyCheckOperate concur)
     {
         NeedConcurrencyCheck = concur.NeedCheck;
     }
     Table        = context.Metadata.Table(operate.ClrType);
     Items        = operate;
     Items        = operate;
     Loader       = CreateLoader(context, Table);
     CommitObject = new CommitObjectFragment(context, Loader);
 }
コード例 #4
0
        /// <summary>
        /// 创建数据对象。
        /// </summary>
        /// <param name="context">生成上下文。</param>
        /// <param name="operate">当前操作对象。</param>
        internal GenerateDataForRelation(GenerateContext context, DbRelationOperateBase operate)
            : base(context, operate)
        {
            Items         = operate;
            IsAddRelation = operate.Type == EOperateType.AddRelation;

            var navigate = operate.Navigate;

            Source = navigate.Source;
            Target = navigate.Target;
            var  firstloader  = new PropertyValueLoader(context, Source, Source.Keys);
            var  secondloader = new PropertyValueLoader(context, Target, Target.Keys);
            bool isreverse    = false;

            if (navigate.IsComposite)
            {
                var composite = (CompositeNavigateMetadata)navigate;
                Table = composite.RelationTable;
            }
            else
            {
                if (navigate.IsForeign == true)
                {
                    Table = navigate.Source;
                }
                else
                {
                    Target = navigate.Source;
                    Source = navigate.Target;

                    firstloader  = new PropertyValueLoader(context, Source, Source.Keys);
                    secondloader = new PropertyValueLoader(context, Target, Target.Keys);

                    Table     = navigate.Target;
                    isreverse = true;
                }
                if (!IsAddRelation)
                {
                    secondloader = null;
                }
            }
            Loader = new RelationPropertyValueLoader(firstloader, secondloader)
            {
                IsReverse = isreverse
            };
            CommitObject = new CommitObjectFragment(context, Loader);
        }