如何获得实体框架代码第一个和可以为空的外键属性工作?

我正在尝试创建一个简单的实体框架代码第一个应用程序。我有这些课程:
public class User
{
    public int UserId { get; set; }

    public string Username { get; set; }

    public virtual ActivationTicket ActivationTicket { get; set; }
}

public class ActivationTicket
{
    public int ActivationTicketId { get; set; }

    public virtual User User { get; set; }

    public string Ticket { get; set; }
}
当我尝试创建一个新用户并将其保存到数据库(没有ActivationTicket的用户)时,我收到一个异常   INSERT语句与FOREIGN KEY约束“ActivationTicket_User”冲突。冲突发生在数据库“Test”,表“dbo.ActivatioTickets”,列'ActivationTicketId'中。该语句已终止。 我假设EF将User和ActivationTicket之间的映射视为1-1,但它应该是1-0..1 我该怎么做才能让它发挥作用?     
已邀请:
您将需要这样的映射规则: 模型构建器     .Entity<使用者>()     .HasOptional< ActivationTicket>(u => u.ActivationTicket)     .WithOptionalPrincipal(); 这将为您提供一个可以为空的UserId的ActivationTickets表。     
@ B3N 这应该足够了,至少在VS 2013中:
public class User
{
   public int UserId { get; set; }

   public string Username { get; set; }

   public int? ActivationTicketId { get; set;}

   public virtual ActivationTicket ActivationTicket { get; set; }
}
这是重要的部分:
public int? ActivationTicketId { get; set;}
这将在ActivasionTicket的“User”表中指定foreignkey,并定义它是可选的。 学分去: http://forums.asp.net/t/1948351.aspx?Change+Foreign+Key+to+nullable+using+Code+First#5554732 我有同样的问题,它立即为我工作。 另外作为注释,我用数据注释“[Key]”标记了所有主键。这可能是必要的,以使这项工作。     

要回复问题请先登录注册