2013-04-26 82 views
1

我有一個entitity:不理解爲什麼我必須實例化類?

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不我實例中RecommendedUser以及User

+0

沒有,每個對象都必須被實例化。或者,RecommendedUser()的默認構造函數必須以某種方式創建一個新的RecommendedByUser()。 – mtsiakiris 2013-04-26 08:37:25

回答

3

您沒有實例化userRecommendedByUser;你只是在安裝user

user.Firstname = model.Firstname; 
    user.Surname = model.Surname; 
    user.Email = model.Email; 
    user.JobTitle = model.JobTitle; 
    user.RecommendedByUser = new RecommendedUser(); // or whatever the exact type is, maybe just User 
    user.RecommendedByUser.UserId = CurrentUser.UserId; 
+0

'RecommendedByUser'是'User'類型。 – Corak 2013-04-26 08:39:23

+1

我認爲他知道如何實例化它,問題是爲什麼他需要 – Sayse 2013-04-26 08:40:12

+0

ooo ok..wil記住這個,謝謝:) – 2013-04-26 08:40:36

2

值類型用類初始化。但是,子對象可以是NULL,因爲它們是引用類型。這些對象在被分配給屬性之前需要進行初始化。

我假設你正在使用像Entity Framework這樣的技術。這樣的框架允許您預取這些對象,以便在您從數據源獲取實體時獲取(並初始化)它們。但是,創建新對象時,您需要自己創建它們。

0

在EntityFramework的情況下,有延遲加載功能。在你的特定情況下,這不適用,因爲你的對象沒有被EF上下文跟蹤。延遲加載(然後自動實例化)僅在跟蹤對象時纔有效。

This thread可能有啓發性。

0

您始終應首先檢查NULL值 像:

if(user.Firstname != null) 
{ 
    user.Firstname = model.Firstname; 
} 

爲了避免空指針異常

+0

在你的例子中,它是無用的。更像是:'if(user!= null && model!= null)user.FirstName = model.FirstName;' – Askolein 2013-04-26 09:58:59

相關問題