コード例 #1
0
 protected virtual void AddSerialization(Serialization.SerializationMembersList list, string memberName, bool eagerLoading)
 {
     if (list != null && eagerLoading)
     {
         list.Add("Serialization.EagerLoadingSerialization", Serialization.SerializerType.Binary, null, null, memberName, true, rel.GetRelationType() == RelationType.n_m);
     }
 }
コード例 #2
0
        public static void Call(Arebis.CodeGeneration.IGenerationHost host,
                                IZetboxContext ctx,
                                Serialization.SerializationMembersList serializationList,
                                ObjectReferenceProperty prop)
        {
            if (ctx == null)
            {
                throw new ArgumentNullException("ctx");
            }
            if (prop == null)
            {
                throw new ArgumentNullException("prop");
            }
            if (!prop.IsList())
            {
                throw new ArgumentOutOfRangeException("prop", "prop must be a List-valued property");
            }

            string name            = prop.Name;
            string wrapperClass    = "OneNRelationList";
            var    rel             = RelationExtensions.Lookup(ctx, prop);
            var    relEnd          = rel.GetEnd(prop);
            var    otherEnd        = rel.GetOtherEnd(relEnd);
            var    exposedListType = rel.NeedsPositionStorage(otherEnd.GetRole()) ? "IList" : "ICollection";
            // the name of the position property
            var positionPropertyName = rel.NeedsPositionStorage(otherEnd.GetRole()) ? Construct.ListPositionPropertyName(otherEnd) : String.Empty;

            Call(host, ctx, serializationList, name, wrapperClass, exposedListType, rel, relEnd.GetRole(), positionPropertyName);
        }
コード例 #3
0
 protected virtual void AddSerialization(Serialization.SerializationMembersList list, string name)
 {
     if (list != null)
     {
         list.Add(disableExport ? Serialization.SerializerType.Binary : Serialization.SerializerType.All, modulenamespace, name, referencedType, ApplyResultExpression());
     }
 }
コード例 #4
0
 protected override void AddSerialization(Serialization.SerializationMembersList list, string name)
 {
     if (list != null)
     {
         if (HasDefaultValue)
         {
             list.Add("Serialization.SimplePropertyWithDefaultSerialization",
                      disableExport ? Templates.Serialization.SerializerType.Binary : Serialization.SerializerType.All,
                      _prop.Module.Namespace,
                      name,
                      type,
                      backingName,
                      IsSetFlagName);
         }
         else
         {
             list.Add("Serialization.SimplePropertySerialization",
                      disableExport ? Serialization.SerializerType.Binary : Serialization.SerializerType.All,
                      _prop.Module.Namespace,
                      name,
                      type,
                      backingName);
         }
     }
 }
コード例 #5
0
        public ObjectReferencePropertyTemplate(Arebis.CodeGeneration.IGenerationHost _host, IZetboxContext ctx, Serialization.SerializationMembersList serializationList, string moduleNamespace, string ownInterface, string name, string implName, string eventName, string fkBackingName, string fkGuidBackingName, string referencedInterface, string referencedImplementation, string associationName, string targetRoleName, string positionPropertyName, string inverseNavigatorName, bool inverseNavigatorIsList, bool eagerLoading, bool relDataTypeExportable, bool callGetterSetterEvents, bool isCalculated, bool disableExport)
            : base(_host)
        {
			this.ctx = ctx;
			this.serializationList = serializationList;
			this.moduleNamespace = moduleNamespace;
			this.ownInterface = ownInterface;
			this.name = name;
			this.implName = implName;
			this.eventName = eventName;
			this.fkBackingName = fkBackingName;
			this.fkGuidBackingName = fkGuidBackingName;
			this.referencedInterface = referencedInterface;
			this.referencedImplementation = referencedImplementation;
			this.associationName = associationName;
			this.targetRoleName = targetRoleName;
			this.positionPropertyName = positionPropertyName;
			this.inverseNavigatorName = inverseNavigatorName;
			this.inverseNavigatorIsList = inverseNavigatorIsList;
			this.eagerLoading = eagerLoading;
			this.relDataTypeExportable = relDataTypeExportable;
			this.callGetterSetterEvents = callGetterSetterEvents;
			this.isCalculated = isCalculated;
			this.disableExport = disableExport;

        }
コード例 #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="host"></param>
        /// <param name="ctx"></param>
        /// <param name="serializationList"></param>
        /// <param name="name">the name of the property to create</param>
        /// <param name="wrapperClass">the name of the wrapper class for wrapping the EntityCollection</param>
        /// <param name="exposedListType">which generic interface to use for the collection (IList or ICollection)</param>
        /// <param name="rel"></param>
        /// <param name="endRole"></param>
        /// <param name="positionPropertyName">the name of the position property for this list</param>
        public static void Call(Arebis.CodeGeneration.IGenerationHost host,
                                IZetboxContext ctx,
                                Serialization.SerializationMembersList serializationList,
                                string name,
                                string wrapperClass,
                                string exposedListType,
                                Relation rel,
                                RelationEndRole endRole,
                                string positionPropertyName)
        {
            if (rel == null)
            {
                throw new ArgumentNullException("rel");
            }

            RelationEnd relEnd   = rel.GetEndFromRole(endRole);
            RelationEnd otherEnd = rel.GetOtherEnd(relEnd);

            string wrapperName = "_" + name;

            var otherName = otherEnd.Navigator == null ? relEnd.RoleName : otherEnd.Navigator.Name;

            string referencedInterface = otherEnd.Type.GetDataTypeString();

            Call(host, ctx, serializationList, name, wrapperName, wrapperClass, exposedListType, rel, endRole, positionPropertyName, otherName, referencedInterface);
        }
コード例 #7
0
 protected virtual void AddSerialization(Serialization.SerializationMembersList list, string underlyingCollectionName)
 {
     if (list != null)
     {
         Serialization.CollectionSerialization.Add(list, ctx, moduleNamespace, name, underlyingCollectionName, orderByValue, disableExport);
     }
 }
コード例 #8
0
        public static void Call(Arebis.CodeGeneration.IGenerationHost host,
                                IZetboxContext ctx,
                                Serialization.SerializationMembersList serializationList,
                                Relation rel, RelationEndRole endRole, string backingCollectionType)
        {
            if (rel == null)
            {
                throw new ArgumentNullException("rel");
            }

            RelationEnd relEnd   = rel.GetEndFromRole(endRole);
            RelationEnd otherEnd = rel.GetOtherEnd(relEnd);

            string name = relEnd.Navigator.Name;
            string exposedCollectionInterface = rel.NeedsPositionStorage(otherEnd.GetRole()) ? "IList" : "ICollection";
            string referencedInterface        = otherEnd.Type.GetDataTypeString();
            string backingName = "_" + name;

            string aSideType = rel.A.Type.GetDataTypeString();
            string bSideType = rel.B.Type.GetDataTypeString();
            string entryType = rel.GetRelationFullName() + host.Settings["extrasuffix"] + Zetbox.API.Helper.ImplementationSuffix;
            string providerCollectionType = (rel.NeedsPositionStorage(otherEnd.GetRole()) ? "IList<" : "ICollection<")
                                            + entryType + ">";

            bool eagerLoading = relEnd.Navigator != null && relEnd.Navigator.EagerLoading;

            Call(host, ctx, serializationList, name, exposedCollectionInterface, referencedInterface, backingName, backingCollectionType, aSideType, bSideType, entryType, providerCollectionType, rel.ExportGuid, endRole, eagerLoading);
        }
コード例 #9
0
 protected virtual void AddSerialization(Serialization.SerializationMembersList list, string name)
 {
     if (list != null)
     {
         list.Add(disableExport ? Serialization.SerializerType.Binary : Serialization.SerializerType.All, modulenamespace, name, type, backingName);
     }
 }
コード例 #10
0
 protected virtual void AddSerialization(Serialization.SerializationMembersList list, string memberName, bool eagerLoading)
 {
     if (list != null && eagerLoading)
     {
         list.Add("Serialization.EagerLoadingSerialization", Serialization.SerializerType.Binary, null, null, memberName, false, false);
     }
 }
コード例 #11
0
 public ObjectReferencePropertyTemplate(Arebis.CodeGeneration.IGenerationHost _host, IZetboxContext ctx, Serialization.SerializationMembersList serializationList, string moduleNamespace, string ownInterface, string name, string implName, string eventName, string fkBackingName, string fkGuidBackingName, string referencedInterface, string referencedImplementation, string associationName, string targetRoleName, string positionPropertyName, string inverseNavigatorName, bool inverseNavigatorIsList, bool eagerLoading, bool relDataTypeExportable, bool callGetterSetterEvents, bool isCalculated, bool disableExport)
     : base(_host)
 {
     this.ctx = ctx;
     this.serializationList = serializationList;
     this.moduleNamespace   = moduleNamespace;
     this.ownInterface      = ownInterface;
     this.name                     = name;
     this.implName                 = implName;
     this.eventName                = eventName;
     this.fkBackingName            = fkBackingName;
     this.fkGuidBackingName        = fkGuidBackingName;
     this.referencedInterface      = referencedInterface;
     this.referencedImplementation = referencedImplementation;
     this.associationName          = associationName;
     this.targetRoleName           = targetRoleName;
     this.positionPropertyName     = positionPropertyName;
     this.inverseNavigatorName     = inverseNavigatorName;
     this.inverseNavigatorIsList   = inverseNavigatorIsList;
     this.eagerLoading             = eagerLoading;
     this.relDataTypeExportable    = relDataTypeExportable;
     this.callGetterSetterEvents   = callGetterSetterEvents;
     this.isCalculated             = isCalculated;
     this.disableExport            = disableExport;
 }
コード例 #12
0
 public ListProperty(Arebis.CodeGeneration.IGenerationHost _host, IZetboxContext ctx, Serialization.SerializationMembersList serializationList, DataType containingType, String name, Property property)
     : base(_host)
 {
     this.ctx = ctx;
     this.serializationList = serializationList;
     this.containingType    = containingType;
     this.name     = name;
     this.property = property;
 }
コード例 #13
0
 public ObjectListProperty(Arebis.CodeGeneration.IGenerationHost host,
                           IZetboxContext ctx,
                           Serialization.SerializationMembersList serializationList,
                           Relation rel,
                           RelationEndRole endRole)
     : this(host, ctx, serializationList, "name", "wrapperName", "wrapperClass", "exposedListType",
            rel, endRole, "positionPropertyName", "otherName", "referencedInterface")
 {
 }
コード例 #14
0
        public ListProperty(Arebis.CodeGeneration.IGenerationHost _host, IZetboxContext ctx, Serialization.SerializationMembersList serializationList, DataType containingType, String name, Property property)
            : base(_host)
        {
			this.ctx = ctx;
			this.serializationList = serializationList;
			this.containingType = containingType;
			this.name = name;
			this.property = property;

        }
コード例 #15
0
        public static void Call(Arebis.CodeGeneration.IGenerationHost host,
                                IZetboxContext ctx, Serialization.SerializationMembersList serializationList, string backingName)
        {
            if (host == null)
            {
                throw new ArgumentNullException("host");
            }

            host.CallTemplate("Properties.ExportGuidProperty",
                              ctx, serializationList, backingName);
        }
コード例 #16
0
        public static void Call(Arebis.CodeGeneration.IGenerationHost host,
                                IZetboxContext ctx, Serialization.SerializationMembersList serializationList, Property prop)
        {
            if (host == null)
            {
                throw new ArgumentNullException("host");
            }

            host.CallTemplate("Properties.NotifyingDataProperty",
                              ctx, serializationList, prop);
        }
コード例 #17
0
 public NotifyingValueProperty(Arebis.CodeGeneration.IGenerationHost _host, IZetboxContext ctx, Serialization.SerializationMembersList serializationList, string type, string name, string modulenamespace, string backingName, bool isCalculated, bool disableExport)
     : base(_host)
 {
     this.ctx = ctx;
     this.serializationList = serializationList;
     this.type            = type;
     this.name            = name;
     this.modulenamespace = modulenamespace;
     this.backingName     = backingName;
     this.isCalculated    = isCalculated;
     this.disableExport   = disableExport;
 }
コード例 #18
0
 protected virtual void AddSerialization(Serialization.SerializationMembersList list, string sourceMember, string targetMember, string targetGuidMember)
 {
     if (list != null)
     {
         if (relDataTypeExportable && !disableExport)
         {
             list.Add("Serialization.ObjectReferencePropertySerialization", Serialization.SerializerType.ImportExport, moduleNamespace, name, sourceMember, targetMember, targetGuidMember);
         }
         list.Add("Serialization.ObjectReferencePropertySerialization",
                  Templates.Serialization.SerializerType.Service, moduleNamespace, name, sourceMember, targetMember, targetGuidMember);
     }
 }
コード例 #19
0
        public NotifyingValueProperty(Arebis.CodeGeneration.IGenerationHost _host, IZetboxContext ctx, Serialization.SerializationMembersList serializationList, string type, string name, string modulenamespace, string backingName, bool isCalculated, bool disableExport)
            : base(_host)
        {
			this.ctx = ctx;
			this.serializationList = serializationList;
			this.type = type;
			this.name = name;
			this.modulenamespace = modulenamespace;
			this.backingName = backingName;
			this.isCalculated = isCalculated;
			this.disableExport = disableExport;

        }
コード例 #20
0
 public static void Call(Arebis.CodeGeneration.IGenerationHost host,
                         IZetboxContext ctx,
                         Serialization.SerializationMembersList serializationList,
                         ValueTypeProperty prop,
                         string collectionWrapperClass,
                         string listWrapperClass)
 {
     if (prop == null)
     {
         throw new ArgumentNullException("prop");
     }
     Call(host, ctx, serializationList, prop, prop.HasPersistentOrder, prop.IsList, collectionWrapperClass, listWrapperClass);
 }
コード例 #21
0
        public static void Call(Arebis.CodeGeneration.IGenerationHost host,
                                IZetboxContext ctx, Serialization.SerializationMembersList serializationList,
                                string type, string name, string modulenamespace, bool isCalculated, bool disableExport)
        {
            if (host == null)
            {
                throw new ArgumentNullException("host");
            }

            string backingName = "_" + name;

            Call(host, ctx, serializationList, type, name, modulenamespace, backingName, isCalculated, disableExport);
        }
コード例 #22
0
        protected virtual void AddSerialization(
            Serialization.SerializationMembersList list,
            string memberType, string memberName,
            string backingStoreType, string backingStoreName)
        {
            if (list != null)
            {
                var xmlname = memberName;

                list.Add("Serialization.CompoundObjectSerialization", disableExport ? Serialization.SerializerType.Binary : Serialization.SerializerType.All,
                         this.xmlNamespace, xmlname, memberType, memberName, backingStoreType, backingStoreName);
            }
        }
コード例 #23
0
 public CalculatedProperty(Arebis.CodeGeneration.IGenerationHost _host, IZetboxContext ctx, Serialization.SerializationMembersList serializationList, string modulenamespace, string className, string referencedType, string propertyName, string getterEventName, bool isCompound, bool disableExport)
     : base(_host)
 {
     this.ctx = ctx;
     this.serializationList = serializationList;
     this.modulenamespace   = modulenamespace;
     this.className         = className;
     this.referencedType    = referencedType;
     this.propertyName      = propertyName;
     this.getterEventName   = getterEventName;
     this.isCompound        = isCompound;
     this.disableExport     = disableExport;
 }
コード例 #24
0
        public CalculatedProperty(Arebis.CodeGeneration.IGenerationHost _host, IZetboxContext ctx, Serialization.SerializationMembersList serializationList, string modulenamespace, string className, string referencedType, string propertyName, string getterEventName, bool isCompound, bool disableExport)
            : base(_host)
        {
			this.ctx = ctx;
			this.serializationList = serializationList;
			this.modulenamespace = modulenamespace;
			this.className = className;
			this.referencedType = referencedType;
			this.propertyName = propertyName;
			this.getterEventName = getterEventName;
			this.isCompound = isCompound;
			this.disableExport = disableExport;

        }
コード例 #25
0
        public static void Call(Arebis.CodeGeneration.IGenerationHost host,
                                IZetboxContext ctx,
                                Serialization.SerializationMembersList serializationList,
                                Relation rel, RelationEndRole endRole)
        {
            if (rel == null)
            {
                throw new ArgumentNullException("rel");
            }

            RelationEnd relEnd   = rel.GetEndFromRole(endRole);
            RelationEnd otherEnd = rel.GetOtherEnd(relEnd);

            string backingCollectionType = RelationToBackingCollectionType(rel, otherEnd);

            Call(host, ctx, serializationList, rel, endRole, backingCollectionType);
        }
コード例 #26
0
 public CollectionEntryListProperty(Arebis.CodeGeneration.IGenerationHost _host, IZetboxContext ctx, Serialization.SerializationMembersList serializationList, string name, string exposedCollectionInterface, string referencedInterface, string backingName, string backingCollectionType, string aSideType, string bSideType, string entryType, string providerCollectionType, Guid relId, RelationEndRole role, bool eagerLoading)
     : base(_host)
 {
     this.ctx = ctx;
     this.serializationList = serializationList;
     this.name = name;
     this.exposedCollectionInterface = exposedCollectionInterface;
     this.referencedInterface        = referencedInterface;
     this.backingName            = backingName;
     this.backingCollectionType  = backingCollectionType;
     this.aSideType              = aSideType;
     this.bSideType              = bSideType;
     this.entryType              = entryType;
     this.providerCollectionType = providerCollectionType;
     this.relId        = relId;
     this.role         = role;
     this.eagerLoading = eagerLoading;
 }
コード例 #27
0
        public static void Call(
            Arebis.CodeGeneration.IGenerationHost host, IZetboxContext ctx,
            Serialization.SerializationMembersList serializationList,
            CompoundObjectProperty prop)
        {
            if (host == null)
            {
                throw new ArgumentNullException("host");
            }
            if (prop == null)
            {
                throw new ArgumentNullException("prop");
            }

            string propName = prop.Name;

            Call(host, ctx, serializationList, prop, propName, prop.IsList, prop.HasPersistentOrder);
        }
コード例 #28
0
        public static void Call(Arebis.CodeGeneration.IGenerationHost host,
                                IZetboxContext ctx,
                                Serialization.SerializationMembersList serList,
                                CalculatedObjectReferenceProperty prop)
        {
            if (prop == null)
            {
                throw new ArgumentNullException("prop");
            }

            // IZetboxContext ctx, Serialization.SerializationMembersList serializationList, string modulenamespace, string className, string referencedType, string propertyName, string getterEventName, bool isCompound, string backingName)
            Call(host, ctx, serList,
                 prop.Module.Namespace,
                 prop.ObjectClass.GetDataTypeString(),
                 prop.GetElementTypeString(),
                 prop.Name, "On" + prop.Name + "_Getter",
                 prop.ObjectClass is CompoundObject,
                 prop.DisableExport == true);
        }
コード例 #29
0
        public CollectionEntryListProperty(Arebis.CodeGeneration.IGenerationHost _host, IZetboxContext ctx, Serialization.SerializationMembersList serializationList, string name, string exposedCollectionInterface, string referencedInterface, string backingName, string backingCollectionType, string aSideType, string bSideType, string entryType, string providerCollectionType, Guid relId, RelationEndRole role, bool eagerLoading)
            : base(_host)
        {
			this.ctx = ctx;
			this.serializationList = serializationList;
			this.name = name;
			this.exposedCollectionInterface = exposedCollectionInterface;
			this.referencedInterface = referencedInterface;
			this.backingName = backingName;
			this.backingCollectionType = backingCollectionType;
			this.aSideType = aSideType;
			this.bSideType = bSideType;
			this.entryType = entryType;
			this.providerCollectionType = providerCollectionType;
			this.relId = relId;
			this.role = role;
			this.eagerLoading = eagerLoading;

        }
コード例 #30
0
        private static void Call(Arebis.CodeGeneration.IGenerationHost host,
                                 IZetboxContext ctx,
                                 Serialization.SerializationMembersList serializationList,
                                 Property prop, bool hasPersistentOrder, bool isList,
                                 string collectionWrapperClass,
                                 string listWrapperClass)
        {
            if (prop == null)
            {
                throw new ArgumentNullException("prop");
            }
            if (!isList)
            {
                throw new ArgumentOutOfRangeException("prop", "prop must be a List-valued property");
            }

            string name                  = prop.Name;
            string backingName           = "_" + name;
            string backingCollectionType = (hasPersistentOrder ? listWrapperClass : collectionWrapperClass);

            string exposedCollectionInterface = hasPersistentOrder ? "IList" : "ICollection";

            string thisInterface                 = prop.ObjectClass.Name;
            string referencedType                = prop.GetElementTypeString();
            string referencedCollectionEntry     = prop.GetCollectionEntryFullName();
            string referencedCollectionEntryImpl = referencedCollectionEntry + host.Settings["extrasuffix"] + Zetbox.API.Helper.ImplementationSuffix;

            string providerCollectionType   = "ObservableCollection<" + referencedCollectionEntryImpl + ">";
            string underlyingCollectionName = "_" + name + "Collection";

            string moduleNamespace = prop.Module.Namespace;

            Call(
                host, ctx, serializationList,
                name, backingName, backingCollectionType, exposedCollectionInterface,
                thisInterface, referencedType,
                referencedCollectionEntry, referencedCollectionEntryImpl,
                providerCollectionType, underlyingCollectionName, !hasPersistentOrder,
                moduleNamespace,
                prop.DisableExport == true);
        }
コード例 #31
0
        public static void Call(Arebis.CodeGeneration.IGenerationHost _host, IZetboxContext ctx, Serialization.SerializationMembersList serializationList, string type, string name, string modulenamespace, string backingName, bool isCalculated, bool disableExport)
        {
            if (_host == null)
            {
                throw new global::System.ArgumentNullException("_host");
            }

            _host.CallTemplate("Properties.NotifyingValueProperty", ctx, serializationList, type, name, modulenamespace, backingName, isCalculated, disableExport);
        }
コード例 #32
0
        public static void Call(Arebis.CodeGeneration.IGenerationHost _host, IZetboxContext ctx, Serialization.SerializationMembersList serializationList, DataType containingType, String name, Property property)
        {
            if (_host == null)
            {
                throw new global::System.ArgumentNullException("_host");
            }

            _host.CallTemplate("Properties.ListProperty", ctx, serializationList, containingType, name, property);
        }
コード例 #33
0
        public static void Call(Arebis.CodeGeneration.IGenerationHost _host, IZetboxContext ctx, Serialization.SerializationMembersList serializationList, string modulenamespace, string className, string referencedType, string propertyName, string getterEventName, bool isCompound, bool disableExport)
        {
            if (_host == null)
            {
                throw new global::System.ArgumentNullException("_host");
            }

            _host.CallTemplate("Properties.CalculatedProperty", ctx, serializationList, modulenamespace, className, referencedType, propertyName, getterEventName, isCompound, disableExport);
        }
コード例 #34
0
        public static void Call(Arebis.CodeGeneration.IGenerationHost _host, IZetboxContext ctx, Serialization.SerializationMembersList serializationList, string name, string exposedCollectionInterface, string referencedInterface, string backingName, string backingCollectionType, string aSideType, string bSideType, string entryType, string providerCollectionType, Guid relId, RelationEndRole role, bool eagerLoading)
        {
            if (_host == null)
            {
                throw new global::System.ArgumentNullException("_host");
            }

            _host.CallTemplate("Properties.CollectionEntryListProperty", ctx, serializationList, name, exposedCollectionInterface, referencedInterface, backingName, backingCollectionType, aSideType, bSideType, entryType, providerCollectionType, relId, role, eagerLoading);
        }
コード例 #35
0
        public static void Call(Arebis.CodeGeneration.IGenerationHost host,
                                IZetboxContext ctx,
                                Serialization.SerializationMembersList serializationList,
                                string ownInterface,
                                string name,
                                string referencedInterface,
                                Relation rel,
                                RelationEndRole endRole,
                                bool callGetterSetterEvents,
                                bool updateInverseNavigator,
                                string assocNameSuffix)
        {
            // TODO: split off relation expansion in own Call() method
            RelationEnd relEnd   = rel.GetEndFromRole(endRole);
            RelationEnd otherEnd = rel.GetOtherEnd(relEnd);

            string moduleNamespace = rel.Module.Namespace;
            string implName        = name + Zetbox.API.Helper.ImplementationSuffix;
            string eventName       = "On" + name;

            string fkBackingName     = "_fk_" + name;
            string fkGuidBackingName = "_fk_guid_" + name;

            string referencedImplementation = referencedInterface
                                              + host.Settings["extrasuffix"] + Zetbox.API.Helper.ImplementationSuffix;
            string associationName = rel.GetAssociationName() + assocNameSuffix;
            string targetRoleName  = otherEnd.RoleName;

            string positionPropertyName = rel.NeedsPositionStorage(endRole)
                ? Construct.ListPositionPropertyName(relEnd)
                : null;

            string inverseNavigatorName = updateInverseNavigator && otherEnd.Navigator != null
                ? otherEnd.Navigator.Name
                : null;
            bool inverseNavigatorIsList = otherEnd.Navigator != null && otherEnd.Navigator.GetIsList();

            bool eagerLoading          = relEnd.Navigator != null && relEnd.Navigator.EagerLoading;
            bool relDataTypeExportable = rel.A.Type.ImplementsIExportable() && rel.B.Type.ImplementsIExportable();

            Call(host,
                 ctx,
                 serializationList,
                 moduleNamespace,
                 ownInterface,
                 name,
                 implName,
                 eventName,
                 fkBackingName,
                 fkGuidBackingName,
                 referencedInterface,
                 referencedImplementation,
                 associationName,
                 targetRoleName,
                 positionPropertyName,
                 inverseNavigatorName,
                 inverseNavigatorIsList,
                 eagerLoading,
                 relDataTypeExportable,
                 callGetterSetterEvents,
                 false, // ObjRef with relation cannot be calculated
                 false);
        }