コード例 #1
0
ファイル: ViewGenerator.cs プロジェクト: mppa-git/EdmTasks
        /// <summary>
        /// Generate views from the given EDMX TextReader
        /// </summary>
        /// <param name="edmxReader">TextReader providing the EDMX XML</param>
        /// <param name="languageOption">C# or VB</param>
        /// <param name="viewsWriter">TextWriter that the views will be written into.  If null, only validation will be performed.</param>
        /// <returns>List of errors that occurred while building the mapping or while validating/generating</returns>
        public static IList<EdmSchemaError> GenerateViewsFromEdmx(TextReader edmxReader, LanguageOption languageOption, TextWriter viewsWriter)
        {
            List<EdmSchemaError> allErrors = null;
            StorageMappingItemCollection mappingItemCollection = EdmMapping.BuildMapping(edmxReader, out allErrors);

            // generate views & write them out to a file
            var evg = new EntityViewGenerator(languageOption);
            var viewGenerationErrors = evg.GenerateViews(mappingItemCollection, viewsWriter);

            if (viewGenerationErrors != null) allErrors.AddRange(viewGenerationErrors);

            return allErrors;
        }
コード例 #2
0
        private void OptimizeContextEF5(
            LanguageOption languageOption,
            string baseFileName,
            StorageMappingItemCollection mappingCollection,
            SelectedItem selectedItem)
        {
            DebugCheck.NotEmpty(baseFileName);
            DebugCheck.NotNull(mappingCollection);

            OptimizeContextCore(
                languageOption,
                baseFileName,
                selectedItem,
                viewsPath =>
                {
                    var viewGenerator = new EntityViewGenerator(languageOption);
                    var errors = viewGenerator.GenerateViews(mappingCollection, viewsPath);
                    errors.HandleErrors(Strings.Optimize_SchemaError(baseFileName));
                });
        }
コード例 #3
0
        private void OptimizeContextCore(LanguageOption languageOption, string baseFileName, StorageMappingItemCollection mappingCollection)
        {
            DebugCheck.NotEmpty(baseFileName);
            DebugCheck.NotNull(mappingCollection);

            var progressTimer = new Timer { Interval = 1000 };

            try
            {
                var selectedItem = _package.DTE2.SelectedItems.Item(1);
                var selectedItemPath = (string)selectedItem.ProjectItem.Properties.Item("FullPath").Value;
                var viewGenerator = new EntityViewGenerator(languageOption);
                var viewsFileName = baseFileName
                        + ".Views"
                        + ((languageOption == LanguageOption.GenerateCSharpCode)
                            ? FileExtensions.CSharp
                            : FileExtensions.VisualBasic);
                var viewsPath = Path.Combine(
                    Path.GetDirectoryName(selectedItemPath),
                    viewsFileName);

                _package.DTE2.SourceControl.CheckOutItemIfNeeded(viewsPath);

                var progress = 1;
                progressTimer.Tick += (sender, e) =>
                    {
                        _package.DTE2.StatusBar.Progress(true, string.Empty, progress, 100);
                        progress = progress == 100 ? 1 : progress + 1;
                        _package.DTE2.StatusBar.Text = Strings.Optimize_Begin(baseFileName);
                    };

                progressTimer.Start();

                Task.Factory.StartNew(
                    () =>
                    {
                        var errors = viewGenerator.GenerateViews(mappingCollection, viewsPath);
                        errors.HandleErrors(Strings.Optimize_SchemaError(baseFileName));
                    })
                    .ContinueWith(
                        t =>
                        {
                            progressTimer.Stop();
                            _package.DTE2.StatusBar.Progress(false);

                            if (t.IsFaulted)
                            {
                                _package.LogError(Strings.Optimize_Error(baseFileName), t.Exception);

                                return;
                            }

                            selectedItem.ProjectItem.ContainingProject.ProjectItems.AddFromFile(viewsPath);
                            _package.DTE2.ItemOperations.OpenFile(viewsPath);

                            _package.DTE2.StatusBar.Text = Strings.Optimize_End(baseFileName, Path.GetFileName(viewsPath));
                        },
                        TaskScheduler.FromCurrentSynchronizationContext());
            }
            catch
            {
                progressTimer.Stop();
                _package.DTE2.StatusBar.Progress(false);

                throw;
            }
        }
コード例 #4
0
ファイル: EdmGen2.cs プロジェクト: nHydrate/nHydrate
		private static void ValidateAndGenerateViews(FileInfo edmxFile, LanguageOption languageOption, bool generateViews)
		{
			XDocument doc = XDocument.Load(edmxFile.FullName);
			XElement c = GetCsdlFromEdmx(doc);
			XElement s = GetSsdlFromEdmx(doc);
			XElement m = GetMslFromEdmx(doc);

			// load the csdl
			XmlReader[] cReaders = { c.CreateReader() };
			IList<EdmSchemaError> cErrors = null;
			EdmItemCollection edmItemCollection =
					MetadataItemCollectionFactory.CreateEdmItemCollection(cReaders, out cErrors);

			// load the ssdl 
			XmlReader[] sReaders = { s.CreateReader() };
			IList<EdmSchemaError> sErrors = null;
			StoreItemCollection storeItemCollection =
					MetadataItemCollectionFactory.CreateStoreItemCollection(sReaders, out sErrors);

			// load the msl
			XmlReader[] mReaders = { m.CreateReader() };
			IList<EdmSchemaError> mErrors = null;
			StorageMappingItemCollection mappingItemCollection =
					MetadataItemCollectionFactory.CreateStorageMappingItemCollection(
					edmItemCollection, storeItemCollection, mReaders, out mErrors);

			// either pre-compile views or validate the mappings
			IList<EdmSchemaError> viewGenerationErrors = null;
			if (generateViews)
			{
				// generate views & write them out to a file
				string outputFile =
						GetFileNameWithNewExtension(edmxFile, ".GeneratedViews" +
								GetFileExtensionForLanguageOption(languageOption));
				EntityViewGenerator evg = new EntityViewGenerator(languageOption);
				viewGenerationErrors =
						evg.GenerateViews(mappingItemCollection, outputFile);
			}
			else
			{
				viewGenerationErrors = EntityViewGenerator.Validate(mappingItemCollection);
			}

			// write errors
			WriteErrors(cErrors);
			WriteErrors(sErrors);
			WriteErrors(mErrors);
			WriteErrors(viewGenerationErrors);

		}
コード例 #5
0
ファイル: EdmGen2Library.cs プロジェクト: jradxl/EdmGen2M
        public static bool ValidateAndGenerateViews(String edmxFile, LanguageOption languageOption, bool generateViews, out String viewsOut, out List<Object> errors)
        {
            viewsOut = String.Empty;

            XDocument xdoc = XDocument.Load(edmxFile);
            XElement c = GetCsdlFromEdmx(xdoc);
            XElement s = GetSsdlFromEdmx(xdoc);
            XElement m = GetMslFromEdmx(xdoc);
            Version v = _namespaceManager.GetVersionFromEDMXDocument(xdoc);

            // load the csdl
            XmlReader[] cReaders = { c.CreateReader() };
            IList<EdmSchemaError> cErrors = null;
            EdmItemCollection edmItemCollection =
                MetadataItemCollectionFactory.CreateEdmItemCollection(cReaders, out cErrors);

            // load the ssdl
            XmlReader[] sReaders = { s.CreateReader() };
            IList<EdmSchemaError> sErrors = null;
            StoreItemCollection storeItemCollection =
                MetadataItemCollectionFactory.CreateStoreItemCollection(sReaders, out sErrors);

            // load the msl
            XmlReader[] mReaders = { m.CreateReader() };
            IList<EdmSchemaError> mErrors = null;
            StorageMappingItemCollection mappingItemCollection = MetadataItemCollectionFactory.CreateStorageMappingItemCollection(edmItemCollection, storeItemCollection, mReaders, out mErrors);

            // either pre-compile views or validate the mappings
            IList<EdmSchemaError> viewGenerationErrors = null;
            if (generateViews)
            {
                // generate views
                EntityViewGenerator evg = new EntityViewGenerator(languageOption);
                using (var writer = new StringWriter())
                {
                    viewGenerationErrors = evg.GenerateViews(mappingItemCollection, writer, v);
                    viewsOut = writer.ToString();
                }
            }
            else
            {
                viewGenerationErrors = EntityViewGenerator.Validate(mappingItemCollection, v);
            }

            // write errors
            errors = new List<Object>();
            errors.AddRange(cErrors);
            errors.AddRange(sErrors);
            errors.AddRange(mErrors);
            errors.AddRange(viewGenerationErrors);
            if (errors.Count > 0)
                return true;

            return false;
        }