private static void GeraClassesOrm(DatabaseObjectInfo objectDatabase, Configuration configuration, ITemplateText dictionaryTemplates) { var gerador = new FileFactory(dictionaryTemplates) { Log = Log }; var nomeArquivo = FileFactory.RetornaNomeClasseAjustado(objectDatabase.Name); var arquivo = gerador.GeneratePocoFiles(nomeArquivo,objectDatabase, configuration); var arquivoBLL = gerador.GenerateBusinessFiles(nomeArquivo, objectDatabase, configuration); var arquivoDAL = gerador.GenerateDataAccesFiles(nomeArquivo, objectDatabase, configuration); File.WriteAllText(string.Format("{0}\\TO\\{1}TO.cs", configuration.DestinationPath, nomeArquivo), arquivo); File.WriteAllText(string.Format("{0}\\BLL\\{1}BLL.cs", configuration.DestinationPath, nomeArquivo), arquivoBLL); File.WriteAllText(string.Format("{0}\\DAL\\{1}DAL.cs", configuration.DestinationPath, nomeArquivo), arquivoDAL); }
/// <summary> /// Carrega os dados das colunas /// </summary> /// <param name="gvCampos">DataGridView alvo</param> /// <param name="objetosMapeados">Objetos a ser mapeados</param> /// <param name="il">Imagelist com as imagens usadas no DataGridView</param> public static void CarregaGridViewColunas(DataGridView gvCampos, DatabaseObjectInfo objetosMapeados, ImageList il) { try { //http://stackoverflow.com/questions/740581/applying-a-datagridviewcomboboxcell-selection-change-immediately gvCampos.Rows.Clear(); //carrega as colunas do primeiro objeto var colunas = objetosMapeados.Columns; foreach (var coluna in colunas) { var celulas = new List<DataGridViewCell>(); var row = new DataGridViewRow(); celulas.Add(new DataGridViewImageCell { Value = coluna.IsPrimaryKey ? il.Images[0] : il.Images[2], ToolTipText = coluna.IsPrimaryKey ? "Chave primaria" : "" }); celulas.Add(new DataGridViewImageCell { Value = coluna.IsIdentity ? il.Images[1] : il.Images[2], ToolTipText = coluna.IsIdentity ? "Auto Incremento" : "" }); celulas.Add(new DataGridViewTextBoxCell { Value = coluna.ColumnName }); celulas.Add(new DataGridViewTextBoxCell { Value = coluna.Type }); celulas.Add(new DataGridViewTextBoxCell { Value = coluna.Size }); celulas.Add(new DataGridViewTextBoxCell { Value = coluna.IsNullability }); celulas.Add(new DataGridViewTextBoxCell { Value = coluna.DefaultValue }); celulas.Add(new DataGridViewTextBoxCell { Value = "T" }); celulas.Add(new DataGridViewComboBoxCell { DataSource = RegExpression.RetornaRegularExpressions(), DisplayMember = "Nome", ValueMember = "Expression", Value = coluna.RegularExpression }); celulas.Add(new DataGridViewComboBoxCell { DataSource = TipoSyncCollumn.ToKeyPar(), DisplayMember = "Value", ValueMember = "Key", Value = 0 }); row.Cells.AddRange(celulas.ToArray()); gvCampos.Rows.Add(row); } } catch (Exception e) { throw new Exception(e.Message, e); } }
private void lvObjetosBanco_ItemCheck(object sender, ItemCheckEventArgs e) { if (lvObjetosBanco.Items[e.Index].Group == lvObjetosBanco.Groups["procedure"] && e.NewValue == CheckState.Checked) { var nomesTiposObjeto = new DatabaseObjectInfo(lvObjetosBanco.Items[e.Index].Text, lvObjetosBanco.Items[e.Index].SubItems[4].Text.ConvertToEnum<EDatabaseObjectType>(), new List<StoredProcedureParameter>()); Parameters = Gerador.StoredProcedureMapping.ListAllStoredProceduresParameters(BancoSelecionado, User, lvObjetosBanco.Items[e.Index].Text); if (Parameters.Count > 0) { var frm = new frmParametros { Parametros = Parameters }; if (frm.ShowDialog(this) == DialogResult.Yes) { nomesTiposObjeto.AjustaParametros(frm.Parametros); } else { MessageBox.Show("Não é possivel carregar os dadso da StoredProcedure sem o preenchimento dos parametros", "", MessageBoxButtons.OK, MessageBoxIcon.Information); e.NewValue = CheckState.Unchecked; return; } frm.Dispose(); } _imgObjetosMapeados.Add(new KeyValuePair<string, Image>(lvObjetosBanco.Items[e.Index].Text, ilIcones.Images["cheked"])); nomesTiposObjeto.Columns = CarregaCamposObjeto(nomesTiposObjeto.Name, nomesTiposObjeto.DatabaseObjectType, true); _selectedObjects.Add(nomesTiposObjeto); } if (e.NewValue == CheckState.Unchecked) { _selectedObjects = _selectedObjects.Where(o => o.Name != lvObjetosBanco.Items[e.Index].Text).ToList(); _imgObjetosMapeados = _imgObjetosMapeados.Where(o => o.Key != lvObjetosBanco.Items[e.Index].Text).ToList(); } }
public string GenerateDataAccesFiles(string nomeTabela, DatabaseObjectInfo objectDatabase, Configuration configuration) { string textoBase; switch (objectDatabase.DatabaseObjectType) { case EDatabaseObjectType.Tabela: textoBase = RetornaTextoBase("padraoDALNativo"); break; case EDatabaseObjectType.Query: case EDatabaseObjectType.Procedure: textoBase = RetornaTextoBase("padraoDALProc"); textoBase = textoBase.Replace("{parametros}", string.Join(", ", objectDatabase.StoredProcedureParameters.Select(p => string.Format("{0} {1}", p.ParameterDotNetType, p.ParameterName)))); var sbParametros = new StringBuilder(); foreach (var parametro in objectDatabase.StoredProcedureParameters) { sbParametros.AppendLine(string.Format("cmd.Parameters.AddWithValue(\"{0}\", {0});", parametro.ParameterName)); } textoBase = textoBase.Replace("{carregaParametros}", sbParametros.ToString()); textoBase = textoBase.Replace("{query}", objectDatabase.DatabaseObjectType == EDatabaseObjectType.Procedure ? nomeTabela : objectDatabase.QuerySql); textoBase = textoBase.Replace("{proc}", objectDatabase.DatabaseObjectType == EDatabaseObjectType.Procedure ? "cmd.CommandType = CommandType.StoredProcedure;" : ""); break; case EDatabaseObjectType.View: textoBase = RetornaTextoBase("padraoDALNativo"); textoBase = Regex.Replace(textoBase, "#region .: Persistencia :.(.|\n)*?#endregion", string.Empty); break; default: throw new ArgumentOutOfRangeException("tipoObjeto"); } textoBase = Log ? textoBase.Replace("[log]", "Log.Error(ex.Message, ex);").Replace("[logHeader]", string.Format("private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof({0}DAL));", nomeTabela)) : textoBase.Replace("[log]", "").Replace("[logHeader]", ""); return textoBase.Replace("{namespace}", configuration.NameSpace).Replace("{classe}", (nomeTabela)); }
public string GenerateBusinessFiles(string nomeTabela, DatabaseObjectInfo objectDatabase, Configuration configuration) { string textoBase; switch (objectDatabase.DatabaseObjectType) { case EDatabaseObjectType.Tabela: textoBase = RetornaTextoBase("padraoBLLNativo"); break; case EDatabaseObjectType.Query: case EDatabaseObjectType.Procedure: textoBase = RetornaTextoBase("padraoBLLProc"); textoBase = textoBase.Replace("{parametros}", string.Join(", ", objectDatabase.StoredProcedureParameters.Select(p => string.Format("{0} {1}", p.ParameterDotNetType, p.ParameterName)))); textoBase = textoBase.Replace("{parametros2}", string.Join(", ", objectDatabase.StoredProcedureParameters.Select(p => p.ParameterName))); break; case EDatabaseObjectType.View: textoBase = RetornaTextoBase("padraoBLLNativo"); textoBase = Regex.Replace(textoBase, "#region .: CRUD :.(.|\n)*?#endregion", string.Empty); break; default: throw new ArgumentOutOfRangeException("tipoObjeto"); } textoBase = Log ? textoBase.Replace("[log]", "Log.Error(ex.Message, ex);").Replace("[logHeader]", string.Format("private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof({0}BLL));", nomeTabela)) : textoBase.Replace("[log]", "").Replace("[logHeader]", ""); return textoBase.Replace("{namespace}", configuration.NameSpace).Replace("{classe}", (nomeTabela)); }
public string GeneratePocoFiles(string tableName, DatabaseObjectInfo objectDatabase, Configuration configuration) { var retorno = new StringBuilder(); CriaCabecario(tableName, configuration.NameSpace, retorno, configuration); CriaPropriedades(objectDatabase.Columns, retorno, objectDatabase.ForeignKeys, configuration); return retorno.ToString(); }