gpt4 book ai didi

c# - 当我创建一个具有地址关系(多对多)的事件时,我收到错误 : Object reference not set to an instance of an object

转载 作者:太空宇宙 更新时间:2023-11-03 21:51:57 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
What is a NullReferenceException in .NET?

我有一个与地址有关系的类 Events,这是一个多对多的关系。当我尝试将地址添加到我的事件时,它给出了错误:

对象引用未设置到对象的实例。

这是我的代码:

事件类

  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; }
}

地址类

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; }
}

上下文

  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");
});

事件 Controller

        // 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);
}

在我的 Controller 中使用“viewEvent.Addresses.Add(address);”我得到了错误。当我将鼠标悬停在地址上时,它具有正确的值,但它一直说未设置对象引用...

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com