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); } }