internal EditingContext GetNewOrExistingContext(Uri itemUri)
        {
            EditingContext itemContext = null;

            // creating a new context is an expensive operation, so optimize for the case where it exists
            var item = _package.ModelManager.GetArtifact(itemUri);

            if (item != null)
            {
                _mapArtifactToEditingContext.TryGetValue(item, out itemContext);
            }

            // there isn't one, so call the path that will create it
            if (itemContext == null)
            {
                item = GetNewOrExistingArtifact(itemUri);
                if (itemUri != null &&
                    item != null &&
                    !_mapArtifactToEditingContext.TryGetValue(item, out itemContext))
                {
                    var service = new EFArtifactService(item);

                    var editingContext = new EditingContext();
                    editingContext.SetEFArtifactService(service);
                    itemContext = editingContext;
                    _mapArtifactToEditingContext[item] = itemContext;
                }
            }

            return(itemContext);
        }
Exemple #2
0
        public static EditingContext GetEditingContext(this EFArtifact artifact)
        {
            Debug.Assert(artifact != null, "artifact != null");

            var service        = new EFArtifactService(artifact);
            var editingContext = new EditingContext();

            editingContext.SetEFArtifactService(service);
            return(editingContext);
        }
        private static FeatureState IsFeatureEnabledForArtifact(Version schemaVersion, Func <EFArtifact, FeatureState> funcToTest)
        {
            using (var editingContext = new EditingContext())
            {
                var modelManager  = new Mock <ModelManager>(null, null).Object;
                var modelProvider = new Mock <XmlModelProvider>().Object;

                var entityDesignArtifactMock =
                    new Mock <EntityDesignArtifact>(modelManager, new Uri("urn:dummy"), modelProvider);

                editingContext.SetEFArtifactService(new EFArtifactService(entityDesignArtifactMock.Object));

                entityDesignArtifactMock.Setup(a => a.SchemaVersion).Returns(schemaVersion);
                entityDesignArtifactMock.Setup(a => a.EditingContext).Returns(editingContext);

                return(funcToTest(entityDesignArtifactMock.Object));
            }
        }