Possible Duplicate:
What is a NullReferenceException in .NET?
I’ve got a class Events that has a relationship with addresses, this is a many-to-many relationship. When I try to add the address to my Event it gives the error:
Object reference not set to an instance of an object.
Here is my code :
EVENT CLASS
public class Event
{
public int EventID { get; set; }
public string EventName { get; set; }
public string EventImage { get; set; }
public DateTime EventDate { get; set; }
public int ItemID { get; set; }
public virtual Item Item { get; set; }
public virtual ICollection<Address> Addresses { get; set; }
}
ADDRESS CLASS
public class Address
{
public int Address_id { get; set; }
public string Address_street { get; set; }
public int Address_housenumber { get; set; }
public string Address_bus { get; set; }
public Nullable<int> Messages_id { get; set; }
public virtual ICollection<Event> Events { get; set; }
}
CONTEXT
public class SocialGEOContext : DbContext
{
public DbSet<Event> Events { get; set; }
public DbSet<Address> Addresses { get; set; }
public DbSet<Item> Items { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
//EVENTS
modelBuilder.Entity<Event>().HasKey(t => t.EventID);
modelBuilder.Entity<Event>().ToTable("events", "geodatabase");
modelBuilder.Entity<Event>().Property(t => t.EventID).HasColumnName("event_id");
modelBuilder.Entity<Event>().Property(t => t.EventName).HasColumnName("event_name").IsRequired().IsUnicode(false).HasMaxLength(64);
modelBuilder.Entity<Event>().Property(t => t.EventDate).HasColumnName("event_date");
modelBuilder.Entity<Event>().Property(t => t.EventImage).HasColumnName("event_image").IsUnicode(false).HasMaxLength(128);
modelBuilder.Entity<Event>().Property(t => t.ItemID).HasColumnName("item_id");
modelBuilder.Entity<Event>().HasRequired(t => t.Item).WithMany(t => t.Events).HasForeignKey(d => d.ItemID);
//ADDRESSES
modelBuilder.Entity<Address>().HasKey(t => t.Address_id);
modelBuilder.Entity<Address>().ToTable("addresses", "geodatabase");
modelBuilder.Entity<Address>().Property(t => t.Address_id).HasColumnName("address_id");
modelBuilder.Entity<Address>().Property(t => t.Address_street).HasColumnName("address_street").IsRequired().IsUnicode(false).HasMaxLength(128);
modelBuilder.Entity<Address>().Property(t => t.Address_housenumber).HasColumnName("address_housenumber");
modelBuilder.Entity<Address>().Property(t => t.Address_bus).HasColumnName("address_bus").IsUnicode(false).IsFixedLength().HasMaxLength(1);
//modelBuilder.Entity<Address>().Property(t => t.messages_id).HasColumnName("messages_id");
//modelBuilder.Entity<Address>().HasOptional(t => t.message).WithMany(t => t.addresses).HasForeignKey(d => d.messages_id);
modelBuilder.Entity<Address>()
.HasMany(t => t.Events)
.WithMany(t => t.Addresses)
.Map(m =>
{
m.ToTable("event_has_address", "geodatabase");
m.MapLeftKey("address_id");
m.MapRightKey("event_id");
});
EVENTCONTROLLER
// POST: /Event/Create
[HttpPost]
public ActionResult Create(EventAddressViewModel ViewModel)
{
if (ModelState.IsValid)
{
Item viewItem = ViewModel.Item;
Address viewAddress = ViewModel.Address;
Event viewEvent = ViewModel.Event;
//ADD ITEM
viewItem.ItemCreateddate = DateTime.Now;
db.Items.Add(viewItem);
//ADD EVENT
viewEvent.Item = viewItem;
db.Addresses.Add(viewAddress);
db.SaveChanges();
Address addres1 = db.Addresses.Find(viewAddress.Address_id);
viewEvent.Addresses.Add(addres1);
db.Events.Add(viewEvent);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(ViewModel);
}
In my controller on the line with “viewEvent.Addresses.Add(address);” I get the error. When I hover on address it has the correct values but it keeps saying object reference not set…
You’re not instantiating your
ICollection. When you attempt to add an address, yourAddressesvariable is null which causes theNullReferenceException. Initialize it to a concrete type: