我有一个实体:
public virtual int RecommendedUserId { get; set; }
public virtual string Firstname { get; set; }
public virtual string Surname { get; set; }
public virtual string Email { get; set; }
public virtual string JobTitle { get; set; }
public virtual DateTime? DateAndTimeProcessed { get; set; }
public virtual DateTime? DateAndTimeRecommended { get; set; }
public virtual string ReasonForRejection { get; set; }
// User also an entity and has property UserId
public virtual User RecommendedByUser { get; set; }
public virtual User AssignedToUser { get; set; }
在我的控制器里我有:
Entities.RecommendedUser user = new RecommendedUser();
user.Firstname = model.Firstname;
user.Surname = model.Surname;
user.Email = model.Email;
user.JobTitle = model.JobTitle;
// why am i getting the Object reference not set to
// an instance of an object error??
user.RecommendedByUser.UserId = CurrentUser.UserId;
如果我实例化RecommendedUser
我不会在User
内实例化RecommendedUser
吗?
答案 0 :(得分:3)
您没有实例化RecommendedByUser
的{{1}};您只是实例化user
。
user
答案 1 :(得分:2)
使用类初始化值类型。但是,子对象可以是NULL
,因为它们是引用类型。在将这些对象分配给属性之前,需要初始化这些对象。
我假设您正在使用像Entity Framework这样的技术。像这样的框架允许您预取这些对象,以便在从数据源获取实体时获取(并初始化)它们。但是,在创建新对象时,您需要自己创建它们。
答案 2 :(得分:0)
在EntityFramework的情况下,有Lazy加载功能。在您的特定情况下不适用,因为EF上下文不跟踪您的对象。延迟加载(然后自动实例化)仅在跟踪对象时才有效。
This thread可能具有指导意义。
答案 3 :(得分:0)
您应该首先检查空值 像:
if(user.Firstname != null)
{
user.Firstname = model.Firstname;
}
避免nullpointer异常