Ejemplo n.º 1
0
        void ImportManyToManyCollection(UnitOfWork outputUow, UnitOfWork intputUow,
                                        object xpoObject, ImportedMemberInfo importedMemberInfo, object objectToImport,
                                        InputMemberInfo memberInfo)
        {
            if (!importedMemberInfo.InitialData.DataProvider)
            {
                return;
            }
            var xpClassInfo      = intputUow.Dictionary.GetClassInfo(null, importedMemberInfo.InitialData.DataProviderTableName);
            var criteriaOperator = CriteriaOperator.Parse(importedMemberInfo.InitialData.DataProviderQueryColumnName + "=?", objectToImport);

            using (var xpCollection = new XPCollection(intputUow, xpClassInfo, criteriaOperator)) {
                var collection             = (XPBaseCollection)memberInfo.GetValue(xpoObject);
                var dataProviderResultInfo = xpClassInfo.GetMember(importedMemberInfo.InitialData.DataProviderResultColumnName);
                foreach (var o in xpCollection)
                {
                    var  listElementTypeInfo = memberInfo.CollectionElementType;
                    var  memberValue         = dataProviderResultInfo.GetValue(o);
                    bool returnKey;
                    bool returnImportKey;
                    var  referenceMemberValue = GetReferenceMemberValue(outputUow, memberValue, listElementTypeInfo.ClassType, out returnKey, out returnImportKey);
                    if (returnKey)
                    {
                        AddFillRefInfo(memberInfo, xpoObject, referenceMemberValue);
                    }
                    if (returnImportKey)
                    {
                        AddFillRefAndImportInfo(memberInfo, xpoObject, referenceMemberValue);
                    }
                    else
                    {
                        collection.BaseAdd(referenceMemberValue);
                    }
                }
            }
        }
Ejemplo n.º 2
0
 void ImportManyToManyCollection(UnitOfWork outputUow, UnitOfWork intputUow,
                              object xpoObject, ImportedMemberInfo importedMemberInfo, object objectToImport,
                              InputMemberInfo memberInfo) {
     if (!importedMemberInfo.InitialData.DataProvider)
         return;
     var xpClassInfo = intputUow.Dictionary.GetClassInfo(null, importedMemberInfo.InitialData.DataProviderTableName);
     var criteriaOperator = CriteriaOperator.Parse(importedMemberInfo.InitialData.DataProviderQueryColumnName + "=?", objectToImport);
     using (var xpCollection = new XPCollection(intputUow, xpClassInfo, criteriaOperator)) {
         var collection = (XPBaseCollection)memberInfo.GetValue(xpoObject);
         var dataProviderResultInfo = xpClassInfo.GetMember(importedMemberInfo.InitialData.DataProviderResultColumnName);
         foreach (var o in xpCollection) {
             var listElementTypeInfo = memberInfo.CollectionElementType;
             var memberValue = dataProviderResultInfo.GetValue(o);
             bool returnKey;
             bool returnImportKey;
             var referenceMemberValue = GetReferenceMemberValue(outputUow, memberValue, listElementTypeInfo.ClassType, out returnKey, out returnImportKey);
             if (returnKey) {
                 AddFillRefInfo(memberInfo, xpoObject, referenceMemberValue);
             } if (returnImportKey) {
                 AddFillRefAndImportInfo(memberInfo, xpoObject, referenceMemberValue);
             } else {
                 collection.BaseAdd(referenceMemberValue);
             }
         }
     }
 }