如何使用Code First(实体框架,Microsoft)制作可为空的复杂列

时间:2011-11-24 21:03:57

标签: entity-framework entity-framework-4.1 ef-code-first

我有一个如下定义,基本上,我想在EmailAccount类中创建它:

公共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 个答案:

答案 0 :(得分: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; }
}

有关Code-First的命名约定,请参阅此document。 (向下滚动到关系约定