public List<CodeFile> ApplyFixToCodeAnalysisDocument(string filePath, List<Type> types, string productName = "Core") { DataSet ds = new DataSet(); ds.ReadFromExcel(filePath); List<ClassMetaData> classMeta = new List<ClassMetaData>(); List<ClassMetaData> aseemblyData = new List<ClassMetaData>(); List<PropertyMetaData> propMeta = new List<PropertyMetaData>(); if (types != null && types.Any()) aseemblyData = ProcessAssembly(types); if (ds.Tables[0].Rows.Count > 0 && ds.Tables[1].Rows.Count > 0) { foreach (DataRow rs in ds.Tables[0].Rows) { if (!string.IsNullOrEmpty(rs["Name"].ToString())) classMeta.Add(new ClassMetaData() { Name = rs["Name"].ToString(), Guid = rs["Guid"].ToString(), TableDataDescription = rs["TableDataDescription"].ToString(), TableDataName = rs["TableDataName"].ToString() }); } foreach (DataRow rs in ds.Tables[1].Rows) { if (!string.IsNullOrEmpty(rs["ClassName"].ToString())) propMeta.Add(new PropertyMetaData() { Name = rs["Name"].ToString(), Guid = rs["Guid"].ToString(), Description = rs["Description"].ToString(), ClassName = rs["ClassName"].ToString(), Type = rs["Type"].ToString(), IsDataMember = rs["IsDataMember"].ToString().Equals("1") ? true : false, PrimaryOrCompositeKey = rs["PrimaryOrCompositeKey"].ToString().Equals("1") ? true : false, Required = rs["Required"].ToString().Equals("1") ? true : false }); } } var files = new List<CodeFile>(); var svcObj = new ServiceObject(productName, CodeFileType.ServiceObject); classMeta.ForEach(c => { c.PropertyMetaData = propMeta.FindAll(p => p.ClassName == c.Name); var aC = aseemblyData.Find(ax => ax.Name == c.Name); List<PropertyMetaData> exceptMeta = null; if (aC != null) { exceptMeta = (from c1 in aC.PropertyMetaData join c2 in c.PropertyMetaData on c1.Name equals c2.Name into gt from sub in gt.DefaultIfEmpty() where sub == null select c1).ToList(); if (exceptMeta.Count > 0) { c.PropertyMetaData.AddRange(exceptMeta); } } var schema = new InformationSchema(); schema.Target = schema.TargetName = c.Name; schema.TableDataDescription = c.TableDataDescription; schema.TableDataName = c.TableDataName; schema.TargetGuid = c.Guid; schema.MetaData = c.PropertyMetaData.Select(p => p.GetMetaData()).ToList(); files.Add(svcObj.Build(schema)); }); string path = @"C:\temp\"; files.ForEach(f => { //if (f.Type == CodeFileType.RepositoryObject || f.Type == CodeFileType.ServiceObject || f.Type == CodeFileType.IManager) f.Content = f.Content.Replace("$PRODUCTNAME$", productName).FormatWhiteSpaces(); //else // f.Content = f.Content.Replace("$PRODUCTNAME$", productName); Utils.Util.Write2File(path, f.Content, f.Name); }); Process.Start(new ProcessStartInfo(path)); return files; }