Esempio n. 1
0
        /// <summary>
        /// 建方法
        /// </summary>
        /// <param name="classType"></param>
        /// <param name="inspectorFieldBuilder"></param>
        /// <param name="typeBuilder"></param>
        private void BuildMethod(Type classType, TypeBuilder typeBuilder)
        {
            EntityInfoHandle entityInfo = EntityInfoManager.GetEntityHandle(classType);
            MethodInfo       method     = null;

            foreach (EntityPropertyInfo pInfo in entityInfo.PropertyInfo)
            {
                UpdatePropertyInfo updateInfo = entityInfo.GetUpdatePropertyInfo(pInfo.PropertyName);
                if (updateInfo != null)
                {
                    method = _mapupdateMethod;//如果是关联属性则调用OnMapPropertyUpdated
                }
                else
                {
                    method = _updateMethod;//如果是一般属性则调用OnPropertyUpdated通知
                }
                BuildEmit(classType, pInfo.BelongPropertyInfo, typeBuilder, method);
            }


            foreach (EntityMappingInfo mInfo in entityInfo.MappingInfo)
            {
                FieldInfo finfo = mInfo.BelongFieldInfo;
                if (mInfo.IsParent)
                {
                    BuildEmit(classType, mInfo.BelongPropertyInfo, typeBuilder, _mapupdateMethod);      //创建set方法
                    BuildMapEmit(classType, mInfo.BelongPropertyInfo, finfo, typeBuilder, _fillParent); //创建get方法
                }
                else
                {
                    BuildMapEmit(classType, mInfo.BelongPropertyInfo, finfo, typeBuilder, _fillChildMethod);//创建get方法
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 获取本属性的关联更新信息
        /// </summary>
        /// <param name="propertyName">属性名</param>
        /// <returns></returns>
        public UpdatePropertyInfo GetUpdatePropertyInfo(string propertyName)
        {
            if (_dicUpdateInfo == null)
            {
                _dicUpdateInfo = InitPropertyUpdateInfo();
            }
            UpdatePropertyInfo ret = null;

            if (_dicUpdateInfo.TryGetValue(propertyName, out ret))
            {
                return(ret);
            }
            return(null);
        }