Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Como criar classe de inicialização de dados no asp.net mvc

Olá, gostaria de saber como criaria uma classe para quando inicializar o sistema, onde eu possa testar se alguns dados estão cadastrados no sistema e se não estiver eu poder realizar o cadastro desses dados.

6 respostas

Olá, Fagner

Você pode criar um método com nome InserirDadosIniciais() , ou algo parecido, que vai verificar se os dados iniciais já existem. Se não existirem, ele cria o dados iniciais. Recomendo usar Entity Framework, por exemplo:

using (MinhasEntidades db = new MinhasEntidades())
    {
        if (!db.Categorias.Any(c => c.CategoriaCodigo == "cat1"))
    {
            Categoria categoria = new Categoria();
            categoria.CategoriaCodigo = "cat1";
            categoria.Nome = "Categoria 1";

            db.Categorias.Add(categoria);
            db.SaveChanges();
    }
    }

Esse método pode ficar numa classe CategoriaDAO, por exemplo.

Já a chamada desse método pode ficar no método Application_Startup() do Global.asax.cs (se estiver usando ASP.NET 4.x) ou no método Configure() na classe Startup.cs se estiver usando ASP.NET Core.

Muito obrigado, vou testar essa solução.

Eu estou testando mas o Global.asax pede um construtor vazio do "DisciplinaDAO" , com isso o "Contexto" é null e meu IF quebra pela referencia Nula do contexto que o Application_Start Pega do Construtor Vazio do "DisciplinaDAO". Eu Tentei colocar no construtor da Classe MvcApplication, porém ocorre um erro de compilação.

protected void Application_Start()
        {            
            DisciplinaDAO disciplina = new DisciplinaDAO();
            disciplina.VerificarDisciplinasCadastradas();
        }
private Contexto contexto;

        public DisciplinaDAO(Contexto contexto)
        {
            this.contexto = contexto;
        }
    public DisciplinaDAO()
        {
        }

        public void VerificarDisciplinasCadastradas()
        {
            var disciplinas = new List<Disciplina>();
            if (!contexto.Disciplinas.Any(arg => arg.NomeDisciplina == "LINGUA PORTUGUESA"))
            {
                var disciplina = new Disciplina();

                disciplina.NomeDisciplina = "LINGUA PORTUGUESA";
                disciplina.MaximoPontos = "A";
                disciplina.MediaPontos = "B";
                disciplina.MinimoPonto = "C";

                disciplinas.Add(disciplina);

            }
        }
            foreach(var novadisciplina in disciplinas)
            {
                Salvar(novadisciplina);
            }
solução!

Seu contexto está nulo, então você tem que passar instanciar o contexto e passá-lo no construtor do DAO:

using (MinhasEntidades contexto = new MinhasEntidades())
    {
            DisciplinaDAO disciplina = new DisciplinaDAO(contexto);
            disciplina.VerificarDisciplinasCadastradas();
}

Obrigado, agora foi que é uma beleza.

Código

            Contexto contexto = new Contexto();

            DisciplinaDAO disciplina = new DisciplinaDAO(contexto);

            disciplina.VerificarDisciplinasCadastradas();

Excelente, Fagner! Qualquer coisa, estamos à disposição!