Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
                }
            }
        }
Esempio n. 4
0
 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);
 }
Esempio n. 5
0
 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);
         }
     }
 }