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);
        }
예제 #2
0
        /// <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();
        }