/// <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); }
/// <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); }