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