void AddFillRefAndImportInfo(InputMemberInfo memberInfo, object owner, object refImportKey) { FillRefList fillRefsList; if (!_fillRefsAndImportDictionary.TryGetValue(memberInfo, out fillRefsList)) { fillRefsList = new FillRefList(); _fillRefsAndImportDictionary.Add(memberInfo, fillRefsList); } fillRefsList.OwnerList.Add(owner); fillRefsList.RefKeyList.Add(refImportKey); }
IEnumerable <KeyValuePair <InputMemberInfo, FillRefList> > RefsAndImports(UnitOfWork outputUow) { foreach (KeyValuePair <InputMemberInfo, FillRefList> pair in _fillRefsDictionary) { XPMemberInfo memberInfo = pair.Key; FillRefList fillRefsList = pair.Value; Type memberType = memberInfo.IsAssociationList ? memberInfo.CollectionElementType.ClassType : memberInfo.ReferenceType.ClassType; var objects = outputUow.GetObjectsByKey(outputUow.GetClassInfo(memberType), fillRefsList.RefKeyList, false); int counter = 0; var memberObjectDictionary = GetObjectDictionary(memberType); foreach (object obj in objects) { object owner = fillRefsList.OwnerList[counter]; object refKey = fillRefsList.RefKeyList[counter]; counter++; AddObjectToCache(memberObjectDictionary, refKey, obj); if (memberInfo.IsAssociationList) { var list = memberInfo.GetValue(owner) as IList; if (list == null) { continue; } list.Add(obj); } else { memberInfo.SetValue(owner, obj); } } } _fillRefsDictionary.Clear(); List <KeyValuePair <InputMemberInfo, FillRefList> > refsAndImports = _fillRefsAndImportDictionary.ToList(); _fillRefsAndImportDictionary.Clear(); return(refsAndImports); }
void ImportRefs(XPClassInfo classInfo, ICollection objects, FillRefList fillRefsList, UnitOfWork outputUow, UnitOfWork inputUow, List <InputMemberInfo> memberList, XPMemberInfo memberInfo) { int counter = 0; var memberObjectDictionary = GetObjectDictionary(classInfo.ClassType); foreach (object importObj in objects) { object owner = fillRefsList.OwnerList[counter]; object refKey = fillRefsList.RefKeyList[counter]; counter++; object obj; if (!memberObjectDictionary.ContainsKey(refKey)) { obj = ImportSingle(refKey, importObj, outputUow, inputUow, classInfo, memberList); } else { bool returnKey; obj = GetCachedObject(memberObjectDictionary, outputUow, refKey, classInfo.ClassType, true, out returnKey); } if (memberInfo.IsAssociationList) { var list = memberInfo.GetValue(owner) as IList; if (list == null) { continue; } list.Add(obj); } else { memberInfo.SetValue(owner, obj); } } }
void AddFillRefInfo(InputMemberInfo memberInfo, object owner, object refKey) { FillRefList fillRefsList; if (!_fillRefsDictionary.TryGetValue(memberInfo, out fillRefsList)) { fillRefsList = new FillRefList(); _fillRefsDictionary.Add(memberInfo, fillRefsList); } fillRefsList.OwnerList.Add(owner); fillRefsList.RefKeyList.Add(refKey); }
void ImportRefs(XPClassInfo classInfo, ICollection objects, FillRefList fillRefsList, UnitOfWork outputUow, UnitOfWork inputUow, List<InputMemberInfo> memberList, XPMemberInfo memberInfo) { int counter = 0; var memberObjectDictionary = GetObjectDictionary(classInfo.ClassType); foreach (object importObj in objects) { object owner = fillRefsList.OwnerList[counter]; object refKey = fillRefsList.RefKeyList[counter]; counter++; object obj; if (!memberObjectDictionary.ContainsKey(refKey)) { obj = ImportSingle(refKey, importObj, outputUow, inputUow, classInfo, memberList); } else { bool returnKey; obj = GetCachedObject(memberObjectDictionary, outputUow, refKey, classInfo.ClassType, true, out returnKey); } if (memberInfo.IsAssociationList) { var list = memberInfo.GetValue(owner) as IList; if (list == null) continue; list.Add(obj); } else { memberInfo.SetValue(owner, obj); } } }