Example #1
0
        /// <summary>
        /// 判断自身父子引用的父级是否合法
        /// </summary>
        /// <param name="modalcontext"></param>
        /// <param name="d"></param>
        /// <param name="view"></param>
        /// <returns></returns>
        private bool IsValidOwnerParent(
            IDataUpdateContext modalcontext,
            DataIdRefenceAttribute d)
        {
            object pid = modalcontext.Data.GetPropertyValue(d.SourceFieldName);

            if (pid != null && pid is long && (long)pid > 0)
            {
                long id = (long)modalcontext.Data.GetPropertyValue("Id");
                if (id == (long)pid)
                {
                    return(false);
                }
                if (NormalServiceHelper.IsChildId(modalcontext.ModalType, id, (long)pid, d.SourceFieldName, CurrentSelector))
                {
                    return(false);
                }
            }
            return(true);
        }
Example #2
0
        /// <summary>
        /// 检测数据中引用的Id是否存在
        /// </summary>
        /// <param name="dm"></param>
        /// <param name="modalcontext"></param>
        /// <param name="d"></param>
        /// <param name="view"></param>
        /// <returns></returns>
        private bool CheckDataIdRefenceIsExists(
            IDataModel dm,
            IDataUpdateContext modalcontext,
            DataIdRefenceAttribute d,
            out long rfid)
        {
            rfid = 0;
            IDataSelector view = CurrentSelector;
            //获取引用数据的Id值
            object refeceId = modalcontext.Data.GetMemberValue(d.SourceFieldName);

            if (refeceId != null && (refeceId is long || refeceId is long?))
            {
                long id = (long)refeceId;
                if (id > 0)
                {
                    rfid = id;
                    //创建引用数据类型的参数
                    Type          refeeType    = d.RefenceModalType != null ? d.RefenceModalType : modalcontext.ModalType;
                    List <string> eqfieldnames = new List <string>();
                    List <object> eqvalues     = new List <object>();
                    eqfieldnames.Add("Id");
                    eqvalues.Add(id);
                    //是否是软删除模型
                    var    refeeDm      = refeeType.GetDataModel();
                    string softdeltekey = refeeDm.GetSoftDeleteFieldName();
                    if (!string.IsNullOrEmpty(softdeltekey))
                    {
                        eqfieldnames.Add(softdeltekey);
                        eqvalues.Add(false);
                    }

                    return(view.GetDataByFieldEqValue(refeeType, eqfieldnames, eqvalues, new string[] { "Id" }) != null);
                }
            }
            //值为null,返回引用正常
            return(true);
        }