public void Generate(nHydrateModel model, Microsoft.VisualStudio.Modeling.Diagrams.Diagram diagram, Microsoft.VisualStudio.Modeling.Shell.ModelingDocData docData)
{
this.ErrorList = new List <string>();
GeneratedFileList = new List <nHydrate.Generator.Common.EventArgs.ProjectItemGeneratedEventArgs>();
try
{
#region Generation
//Clean up delete tracking
model.RemovedTables.Remove(x => model.Entities.Select(y => y.PascalName).Contains(x));
model.RemovedViews.Remove(x => model.Views.Select(y => y.PascalName).Contains(x));
var g = new nHydrate.Generator.Common.GeneratorFramework.GeneratorHelper();
g.ProjectItemGenerated += new nHydrate.Generator.Common.GeneratorFramework.ProjectItemGeneratedEventHandler(g_ProjectItemGenerated);
var genList = BuildModelList(model, diagram, docData);
var excludeList = new List <Type>();
var generatorTypeList = g.GetProjectGenerators(genList.First());
if (generatorTypeList.Count == 0)
{
return; //add message box
}
if (ChooseGenerators(model, genList, generatorTypeList, excludeList, g))
{
//Perform actual generation
if (genList.Count > 0)
{
PerformGeneration(model, genList, diagram.Store, docData, excludeList, g);
}
model.RemovedTables.Clear();
model.RemovedViews.Clear();
}
#endregion
//Remove temp file
try
{
genList.ForEach(x => System.IO.File.Delete(x.FileName));
}
catch { }
#if DEBUG
if (this.ErrorList.Count > 0)
{
var F = new nHydrate.DslPackage.Forms.ErrorForm();
F.SetErrors(this.ErrorList);
F.ShowDialog();
}
#endif
}
catch (Exception ex)
{
throw;
}
}