Esempio n. 1
0
        private static void MigrateDBAuto(ModelTMSContainer Context)
        // under construction!!!
        {
            string Test = "";

            System.Data.Metadata.Edm.MetadataWorkspace CheckDB = Context.MetadataWorkspace;
            System.Data.Metadata.Edm.ItemCollection    EntColl = CheckDB.GetItemCollection(System.Data.Metadata.Edm.DataSpace.SSpace);
            foreach (EntityType Ent in EntColl.OfType <EntityType>())
            {
                // check if all properties are present
                foreach (EdmProperty Mem in Ent.Members.OfType <EdmProperty>())
                {
                    Test = Test + Ent.Name + " - " + Mem.Name + "\r\n";
                }
            }

            System.Data.Metadata.Edm.ItemCollection KeyColl = CheckDB.GetItemCollection(System.Data.Metadata.Edm.DataSpace.CSpace);
            foreach (EntityType Ent in KeyColl.OfType <EntityType>())
            {
                // check if all properties are present
                foreach (NavigationProperty Nav in Ent.Members.OfType <NavigationProperty>())
                {
                    Test = Test + Ent.Name + " - " + Nav.Name + "\r\n";
                }
            }
        }
        public static LegacyMetadata.MetadataWorkspace ToLegacyMetadataWorkspace(this MetadataWorkspace metadataWorkspace)
        {
            Debug.Assert(metadataWorkspace != null, "metadataWorkspace != null");

            // The cloned workspace is supposed to be used only by provider. Therefore we only care about SSpace.
            // For CSpace and C-S mapping we register dummy item collections just to make the workspace checks pass.
            var legacyStoreItemCollection =
                ((StoreItemCollection)metadataWorkspace.GetItemCollection(DataSpace.SSpace)).ToLegacyStoreItemCollection();

            var version = EntityFrameworkVersion.DoubleToVersion(legacyStoreItemCollection.StoreSchemaVersion);

            var legacyEdmItemCollection = GetLegacyEdmItemCollection(version);

            var legacyWorkspace = new LegacyMetadata.MetadataWorkspace();

            legacyWorkspace.RegisterItemCollection(legacyEdmItemCollection);
            legacyWorkspace.RegisterItemCollection(legacyStoreItemCollection);

            var msl = string.Format(
                CultureInfo.InvariantCulture,
                MslTemplate,
                SchemaManager.GetMSLNamespaceName(version),
                legacyStoreItemCollection.GetItems <LegacyMetadata.EntityContainer>().Single().Name);

            using (var stringReader = new StringReader(msl))
            {
                using (var reader = XmlReader.Create(stringReader))
                {
                    var legacyMappingItemCollection =
                        new LegacyMapping.StorageMappingItemCollection(
                            legacyEdmItemCollection,
                            legacyStoreItemCollection,
                            new[] { reader });

                    legacyWorkspace.RegisterItemCollection(legacyMappingItemCollection);
                }
            }

            return(legacyWorkspace);
        }
        public static LegacyMetadata.MetadataWorkspace ToLegacyMetadataWorkspace(this MetadataWorkspace metadataWorkspace)
        {
            Debug.Assert(metadataWorkspace != null, "metadataWorkspace != null");

            // The cloned workspace is supposed to be used only by provider. Therefore we only care about SSpace.
            // For CSpace and C-S mapping we register dummy item collections just to make the workspace checks pass.
            var legacyStoreItemCollection =
                ((StoreItemCollection)metadataWorkspace.GetItemCollection(DataSpace.SSpace)).ToLegacyStoreItemCollection();

            var version = EntityFrameworkVersion.DoubleToVersion(legacyStoreItemCollection.StoreSchemaVersion);

            var legacyEdmItemCollection = GetLegacyEdmItemCollection(version);

            var legacyWorkspace = new LegacyMetadata.MetadataWorkspace();
            legacyWorkspace.RegisterItemCollection(legacyEdmItemCollection);
            legacyWorkspace.RegisterItemCollection(legacyStoreItemCollection);

            var msl = string.Format(
                CultureInfo.InvariantCulture,
                MslTemplate,
                SchemaManager.GetMSLNamespaceName(version),
                legacyStoreItemCollection.GetItems<LegacyMetadata.EntityContainer>().Single().Name);

            using (var stringReader = new StringReader(msl))
            {
                using (var reader = XmlReader.Create(stringReader))
                {
                    var legacyMappingItemCollection =
                        new LegacyMapping.StorageMappingItemCollection(
                            legacyEdmItemCollection,
                            legacyStoreItemCollection,
                            new[] { reader });

                    legacyWorkspace.RegisterItemCollection(legacyMappingItemCollection);
                }
            }

            return legacyWorkspace;
        }