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

Dúvida na criacao de novo usuario na mesma tabela

Olá a todos, 

Gostária de saber se o código abaixo para a criacao de uma novo usuario está certo e se tenho que repetir etsas linhas a cada vez

            contexto.SaveChanges();
            contexto.Dispose();

e se assim está correcto, como faco para fazer um refresh da database?  Agradecida :)

namespace lojaComEntity
{
    class Program
    {
        static void Main(string[] args)
        {
            EntidadesContext contexto = new EntidadesContext();// para salvar este usuario //Se quer acessar a DB usanando o EntityFramework, tem q usar a class EntidadesContext q é a class q ta configurada p fazer a conexao 
            Usuario nome1 = new Usuario()
            {
                Nome = "Nome1",
                Senha = "123"
            };
            contexto.Usuarios.Add(nome1 );
            contexto.SaveChanges();
            contexto.Dispose();

            Usuario nome2 = new Usuario()
            {
                Nome = "Nome2 ",
                Senha = "123"
            };
            contexto.Usuarios.Add(nome2);
            contexto.SaveChanges();
            contexto.Dispose();

            Console.WriteLine("Salvou o usuario");
            Console.ReadLine();
        }
    }
}
7 respostas
solução!

Sim, esse código serve para cadastrar novos usuários. Mas só use o "contexto.Dispose();" quando não for mais usar o contexto.

Olá Fernando, Obrigadissimo pela ajuda mais uma vez :)

Já agora, podes ajudar me com um problema que  to a ter?

Tenho erros nas linhas abaixo por causa do CategoriaId que nao ta a ser reconhecido. 
Ainda nao consegui adicionar dados na DB por causa deste erro com o Id. 
No inicio coloquei esta FK com o tipo Guid como tu proprio explicastes por ai noutro post e o aviso de erro vinha por causa deste tipo. 
Apaguei a DB e fiz outra com o tipo int que pediam, porém já nao consegui fazer a migracao mais, pois dava um aviso que já tinha sido feito e mencionava que esta informacao estava na linha 11 do App.config ... :(

Valeu pelo apoio. Obrigadao :)

Produto mouse = new Produto() { Nome = "mouse", Preco = 20, Categoria = informatica };

Produto p1 = new Produto() { Nome = "Teclado", Preco = 30, CategoriaId == 1 };
contexto.Produtos.Add(p1); contexto.SaveChanges();

Produto p = contexto.Produtos.FirstOrDefault(produto => produto.Id == 1);

Produto p = contexto.Produtos.Include(Produto => Produto.Categoria).FirstOrDefault(produto => produto.Id == 1);

Qual o erro que aparece?

Ele ocorre antes do programa executar ou durante a execução?

Agora que eliminei a DB para tentar um novo Add-Migration DB e que nao consigo, uma vez que recebo esta informacao abaixo sem ter conseguido criar a migracao

The entry 'lojaComEntity.Properties.Settings.lojaConnectionString' has already been added. (C:\Users\gg\users\Alura\projekte\DBEntityFramework\lojaComEntity\lojaComEntity\App.config line 11)

Entao recebo também este erro abaixo já ao tentar criar um registo

An unhandled exception of type 'System.InvalidOperationException' occurred in EntityFramework.Core.dll

Additional information: No database providers are configured. Configure a database provider by overriding OnConfiguring in your DbContext class or in the AddDbContext method when setting up services.

The entry 'lojaComEntity.Properties.Settings.lojaConnectionString' has already been added.

Esse erro acima é por ter duas vezes uma string de conexão com o mesmo nome, esse nome deve ser único por string de conexão. (No caso dessa aula, só se usa uma string)

Olá Fernando, valeu mais uma vez, mas já tinha conseguido encontrar o erro em relacacao a DB... Isto foi porque eu apaguei e criei sucessivamente, sem perceber nada :D entao comecei a olhar o ficheiro xml com mais atencao e dei me conta que tinha os dados de tres DB iguais em diretórios diferentes, porém todas com o mesmo nome. Por isto nao deixa fazer um novo Add-Migration com update... mas esta parte já está. O chato é que apesar de conseguir fazer a manipulacoes, minha DB nao aparece no server explorer no programa :(

Agora persiste estes erro, mencionado na ultima mensagem :(

Produto p = contexto.Produtos.Include(Produto => Produto.Categoria).FirstOrDefault(produto => produto.Id == 1); Console.WriteLine(p.Categoria.Nome);

An unhandled exception of type 'Microsoft.Data.Entity.DbUpdateException' occurred in EntityFramework.Core.dll

Additional information: An error occurred while updating the entries. See the inner exception for details.

e em

Produto mouse = new Produto() { Nome = "mouse", Preco = 20, Categoria = impressora };//ex da video-aula

An unhandled exception of type 'System.NullReferenceException' occurred in lojaComEntity.exe

Additional information: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

O que quer dizer "A referencia do objeto nao foi definida em uma instancia do objeto"?"

Desculpa o monte de dúvidas, mas nao é burrice e sim inexperiencia ;)

Muitissimo agradecida

"A referencia do objeto nao foi definida em uma instancia do objeto" é quando você tenta acessar propriedades de um objeto nulo.

Por exemplo:

Console.WriteLine(p.Categoria.Nome)

Caso p.Categoria seja nulo, ao tentar acessar .Nome, irá dar erro de referência nula.