Estou criando uma tela só de cadastro básico inicial em Windows Form C#, estou usando uma interface e um repositório e o DbContext. mas quando estou tentando salvar o repositório me retorna essa mensagem. System.NullReferenceException: ‘Referência de objeto não definida para uma instância de um objeto.’
using Microsoft.EntityFrameworkCore;
using Projeto_Teste.Data.Configuration;
using Projeto_Teste.Model;
namespace Projeto_Teste.Data
{
public class DataContext : DbContext
{
public DataContext(DbContextOptions<DataContext> options) : base(options)
{
}
public DataContext()
{
}
public DbSet<Cliente> Clientes { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseMySql("Server=localhost;Database=dbprojetoTeste;User=root;Pwd=3103");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.ApplyConfiguration(new ClienteConfiguration());
}
}
}
using Projeto_Teste.Model;
namespace Projeto_Teste.Interface
{
public interface ICliente
{
void Add(Cliente cliente);
}
}
using Projeto_Teste.Data;
using Projeto_Teste.Interface;
using Projeto_Teste.Model;
namespace Projeto_Teste.Repository
{
public class ClienteRepository : ICliente
{
public ClienteRepository(DataContext context)
{
_context = context;
}
private readonly DataContext _context;
public void Add(Cliente cliente)
{
_context.Clientes.Add(cliente);
_context.SaveChanges();
}
}
}
using Projeto_Teste.Interface;
using Projeto_Teste.Model;
using System.Windows.Forms;
namespace Projeto_Teste
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public Form1(ICliente repository)
{
_repository = repository;
}
private readonly ICliente _repository;
public void Insert()
{
var model = new Cliente(nome: txtNome.ToString(),
telefone: txtTelefone.ToString(),
endereco: txtEndereco.ToString());
_repository.Add(model);
}
private void btnSalvar_Click(object sender, System.EventArgs e)
{
Insert();
}
}
}
using Microsoft.Extensions.DependencyInjection;
using Projeto_Teste.Interface;
using Projeto_Teste.Repository;
namespace Projeto_Teste.Data
{
public static class DependencyInjectionConfiguration
{
public static IServiceCollection AddDependencyInjection(this IServiceCollection services)
{
services.AddScoped<ICliente, ClienteRepository>();
return services;
}
}
}
using Microsoft.Extensions.DependencyInjection;
using Projeto_Teste.Data;
using System;
using System.Windows.Forms;
namespace Projeto_Teste
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
public static void ConfigureServices(IServiceCollection services)
{
services.AddDependencyInjection()
.AddDbContext<DataContext>();
}
}
}
Se alguém puder me ajudar ou tiver algum exemplo de comi usar esse padrão eu fico grato por que ainda não consegui encontra o erro.