Я получаю немного странной ошибки, который оставил мне немного сбит с толку, поэтому позвольте мне нарисовать картину:MVC C# странное NullReference Исключение
У меня есть контроллер, который обновляет базу данных с обзорами по домам. Если дом не существует, он создает один, а затем обновляет его.
Так что это код, если дом не существует:
if (checkHouse == null)
{
var department = db.Universitys.Single(d => d.universityName == "NotSet");//make dynamic
var hws = new House();
hws.address1 = reviewmodelview.Address1;
hws.address2 = reviewmodelview.Address2;
hws.postCode = reviewmodelview.postCode;
hws.noOfDisputes = 0;
department.Houses.Add(hws);
db.SaveChanges(); //created the house and saved the changes, now apply the review to it.
var theHouse = db.Houses.Single(d => d.address1 == reviewmodelview.Address1);//findhouse
var rvw = new Review(); //create review
rvw.condition = reviewmodelview.condition;
rvw.furniture = reviewmodelview.furniture;
rvw.overall = reviewmodelview.overall;
rvw.isApproved = false;
rvw.review = reviewmodelview.review;
rvw.user = User.Identity.Name;
rvw.reviewDate = DateTime.Now;
theHouse.Reviews.Add(rvw);
db.SaveChanges();
}
и вот код, если дом действительно существует:
else
{
var theHouse = db.Houses.Single(d => d.address1 == reviewmodelview.Address1);//findhouse
var rvw = new Review();//create review
rvw.condition = reviewmodelview.condition;
rvw.furniture = reviewmodelview.furniture;
rvw.overall = reviewmodelview.overall;
rvw.isApproved = false;
rvw.review = reviewmodelview.review;
rvw.user = User.Identity.Name;
rvw.reviewDate = DateTime.Now;
theHouse.Reviews.Add(rvw);
db.SaveChanges();
}
Теперь проблема заключается в этом, если дом существует, добавлен обзор. Если дом не существует, дом добавляется в базу данных, но код перерывы на:
theHouse.Reviews.Add(rvw);
И если я парить мышь над Отзывы он говорит, что его нуль. Ошибка: «Ссылка на объект не установлена в экземпляр объекта».
Однако, если я попробую еще раз, но на этот раз добавить адрес дома, который уже существует в базе данных и добавить точку останова в
theHouse.Reviews.Add(rvw);
он говорит: {System.Data.Objects.DataClasses.EntityCollection<Data.Manager.Review>}
я не могу выяснить, почему коллекция обзоров является нулевой для двух идентичных фрагментов кода!
Дом модель такова:
namespace Data.Manager
{
public class House
{
public virtual int HouseID { get; set; }
public virtual string postCode { get; set; }
public virtual string address1 { get; set; }
public virtual string address2 { get; set; }
public virtual int noOfDisputes { get; set; } //number of disputes added by tennants
public virtual int averageRating { get; set; }
public virtual ICollection<Review> Reviews { get; set; }
}
}
Если бы я мог получить объяснение, почему это происходит, я люблю тебя навсегда.
Молодцы. Побей меня! +1 для кончика конструктора. – da7rutrak