J'ai tout juste commencé à apprendre Entity Framework 6 et j'ai du mal à ajouter des données de mon application Web à une base de données MySQL. Je sens que je fais tout bien mais je reçois toujours une "System.NullReferenceException: référence d'objet non définie à une instance d'un objet" quand j'essaye d'ajouter quelque chose à la base de données en utilisant une approche de code d'abord. Le code est montré ci-dessous.Entity Framework: Référence de l'objet non définie sur l'instance d'un objet
Classe client:
namespace LibraryManager.Models
{
public class Customer
{
public int CustomerId { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public virtual ICollection<Book> BooksRead { get; set; }
public Customer()
{
this.BooksRead = new List<Book>();
}
}
}
Classe livre:
namespace LibraryManager.Models
{
public class Book
{
public int BookId { get; set; }
public string Name { get; set; }
public string Genre { get; set; }
public double Rating { get; set; }
public Boolean Available { get; set; }
public string Author { get; set; }
public string Desc { get; set; }
public virtual Customer Customer { get; set; }
}
}
DatabaseManager
public class DatabaseManager
{
/**
* Adds a book into the database
*/
public void AddBook(Book book)
{
using (var ctx = new DatabaseContext())
{
ctx.Books.Add(book); -->Error Occurs here
ctx.SaveChanges();
}
}
}
classe Contexte
public class DatabaseContext : DbContext
{
public DbSet<Book> Books { get; set; }
public DbSet<Customer> Customers { get; set; }
public DatabaseContext() : base()
{
}
}
Merci à l'avance
EDIT:
code appelant AddBook
Book HarryPotter = new Book() { Name = "Chamber of Secrets", Genre = "Fantasy", Rating = 8.6, Available = true, Author = "J.K Rowling" };
DatabaseManager manager = new DatabaseManager();
manager.AddBook(HarryPotter);
Je parierais que votre argument passé dans cette méthode est nul. – Ratatoskr
Salut merci d'avoir répondu. Je viens d'éditer ma question – user7215621
Il serait plus intéressant de voir comment vous créez un objet livre avant de l'ajouter. –