问题:
使用Repository设计模式,使用层:Core,Data,Service和Presentation,在Presentation层中,我们有一个名为“Edit”的Controller操作方法。
Action方法调用SpaceService.GetSpace方法,该方法返回带有数据的对象(在调试应用程序时已经验证)但是,返回对象没有被分配给var空间?单步执行此行代码后,var space为null。
model.Inactive = space.Inactive;
引发的错误是“对象引用未设置为对象的实例。”(NullReferenceException)
对于为什么var空间变量没有被赋予GetSpace方法返回的值的任何想法,将不胜感激。
** 代码 **
控制器操作方法
public ActionResult Edit(Guid id)
{
var space = SpaceService.GetSpace(id);
var model = new SpaceEditModel();
try
{
model.Inactive = space.Inactive;
model.SpaceDef = space.SpaceDef;
model.LocationID = space.LocationID;
}
catch (Exception ex)
{
Response.Write(ex.InnerException.ToString());
}
return View(model);
}
Service method
public Space GetSpace(Guid id)
{
return UnitOfWork.Repository<Space>().FindById(id);
}
空间实体
public class Space : BaseEntity
{
#region private members
private ICollection<SpaceAddress> _spaceAddress;
#endregion
public string SpaceDef { get; set; }
public bool Inactive { get; set; }
#region foreign key
public Guid LocationID { get; set; }
#endregion
#region navigation property
public virtual Location Location { get; set; }
#endregion
public virtual ICollection<SpaceAddress> SpaceAddresses
{
get { return _spaceAddress ?? (_spaceAddress = new List<SpaceAddress>()); }
protected set { _spaceAddress = value; }
}
}