2011-11-24 25 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) –

相关问题