2011-11-24 76 views
1

我有一個定義,就像下面,基本上,我想在EmailAccount類來創建此:如何使用CodeFirst(的EntityFramework,微軟),使可空列複雜

公共EmailUser? EmailUserAccountInfo {get; set;}

編譯器給我一個關於非空類型的錯誤。我的目標是我想讓EmailUser可選。我有點困惑,因爲我可以直接設置EmailUserAccountInfo = null。

var r = new EmailAccount() 
         { 
          EmailUserAccountInfo = null, 
          Id = 1001 
         }; 



public class EmailAccount 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int Id { get; set; } 

    public EmailUser EmailUserAccountInfo { get; set; } 
} 


public class EmailUser 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int Id { get; set; } 

    public EmailAccount EmailAcount { get; set; } 

    public string EmailAddress { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string ZipCode { get; set; } 
    public string City { get; set; } 
    public string State { get; set; } 
    public int Temperature { get; set; } 
    public string WeatherString { get; set; } 

    public ImageDetail ImageOfUser { get; set; } 
} 

回答

1

,如果你添加一個外鍵,就可以標記出可空你可以這樣做:

public class EmailAccount 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int Id { get; set; } 

    // Foreign key  
    public int? EmailUserAccountInfoId { get; set; } 

    // Navigation property 
    public virtual EmailUser EmailUserAccountInfo { get; set; } 
} 

看到這個document有關命名約定代碼優先。 (滾動到關係公約

+0

謝謝Tsuushin,你能解釋一下virtual關鍵字在數據庫中的含義嗎?另外,我對添加外鍵列是否明確有所影響有一些疑問。 –

+0

顯式添加外鍵允許您將其標記爲無效,從而指示EF關係爲零對一。 –

+0

至於虛擬關鍵字,請參閱[對此問題的答案](http://stackoverflow.com/questions/5597760/what-effects-can-the-virtual-keyword-have-in-entity-framework-4- 1-POCO碼-FI) –