Example #1
0
        private int FindCreateLinkType(LinkType linkType)
        {
            using (RuntimeEntityModel context = RuntimeEntityModel.CreateInstance())
            {
                int rtArtifactTypeSourceId = FindCreateArtifactType(linkType.SourceArtifactType);
                int rtArtifactTypeTargetId = FindCreateArtifactType(linkType.TargetArtifactType);

                var linkTypeQuery = from t in context.RTLinkTypeSet
                                    where t.DisplayName.Equals(linkType.FriendlyName) &&
                                    t.ReferenceName.Equals(linkType.ReferenceName) &&
                                    t.SourceArtifactType.Id == rtArtifactTypeSourceId &&
                                    t.TargetArtifactType.Id == rtArtifactTypeTargetId
                                    select t;

                if (linkTypeQuery.Count() > 0)
                {
                    return(linkTypeQuery.First().Id);
                }

                var    serializer       = new GenericSerializer <ExtendedLinkProperties>();
                string extendedProperty =
                    serializer.Serialize(linkType.ExtendedProperties ??
                                         new ExtendedLinkProperties(ExtendedLinkProperties.Topology.Network));

                var rtArtifactTypeSource = context.RTArtifactTypeSet.Where(sAT => sAT.Id == rtArtifactTypeSourceId).First();
                Debug.Assert(null != rtArtifactTypeSource);

                var rtArtifactTypeTarget = context.RTArtifactTypeSet.Where(tAT => tAT.Id == rtArtifactTypeTargetId).First();
                Debug.Assert(null != rtArtifactTypeTarget);

                RTLinkType rtLinkType = RTLinkType.CreateRTLinkType(0, linkType.ReferenceName, linkType.FriendlyName);
                rtLinkType.SourceArtifactType = rtArtifactTypeSource;
                rtLinkType.TargetArtifactType = rtArtifactTypeTarget;
                rtLinkType.ExtendedProperty   = extendedProperty;
                context.AddToRTLinkTypeSet(rtLinkType);
                context.TrySaveChanges();
                return(rtLinkType.Id);
            }
        }