EF外键迁移会引发错误

Cod*_*men 1 c# entity-framework-5

我有两张桌子:

[Table("Ticket_Admins")]
public class TicketAdmin
{
    public TicketAdmin()
    {
        Name = new Record();
        Name.IsRevisioned = false;
        Name.IsVisible = true;
        Name.Category = typeof(TicketAdmin).Name;
    }
    [Key]
    public int Id { get; set; }
    public virtual Record Name { get; set; }
    public virtual TicketPost Post { get; set; }
    public virtual UserProfile User { get; set; }
}

[Table("UserProfile")]
public class UserProfile
{
    private string _email;

    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]       
    public int UserId { get; set; }
    public string Email 
    {
        get { return _email; }
        set { _email = value.ToLower(); }
    }
}
Run Code Online (Sandbox Code Playgroud)

并在上下文中映射它们:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<TicketAdmin>()
            .HasRequired(x => x.User)
            .WithRequiredPrincipal();
        base.OnModelCreating(modelBuilder);
    }
Run Code Online (Sandbox Code Playgroud)

但是在迁移时我得到错误:

ALTER TABLE语句与FOREIGN KEY约束"FK_dbo.UserProfile_dbo.Ticket_Admins_UserId"冲突.冲突发生在数据库"aspnet-BoomzHelperPortal-dbv3",表"dbo.Ticket_Admins",列'Id'中.

我在这里做错了吗?什么我究竟想要做的是地图我TicketAdminUserProfile通过ID( UserProfile.UserId = TicketAdmin.Id)

谢谢你的时间!

更新:我刚尝试创建一个空数据库,这个shema发现它创建UserProfile.UserId了一个外键列,但我需要的是TicketAdmin.Id成为一个FK列.(就像所有用户都有UserProfile一样,但不是每个人都有TicketAdmin设置,而TicketAdmin是UserProfile的子级,并且具有与UserProfile ID相同的ID).

Nuf*_*fin 5

如果要添加必需的关系(不可为空的外键),则必须满足下列条件之一:

  • 包含外键的表(Ticket_Admins在本例中)必须为空,或
  • 外键的列之前存在,并且所述列中的每个值都包含相关实体的有效键