我有 2 张桌子:
[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(); }
}
}
并在上下文中映射它们:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<TicketAdmin>()
.HasRequired(x => x.User)
.WithRequiredPrincipal();
base.OnModelCreating(modelBuilder);
}
但是在迁移时我收到错误:
ALTER TABLE 语句与 FOREIGN KEY 约束“FK_dbo.UserProfile_dbo.Ticket_Admins_UserId”冲突。冲突发生在数据库“aspnet-BoomzHelperPortal-dbv3”、表“dbo.Ticket_Admins”、“Id”列中。
我在这里做错了吗?我真正想做的是将 My 映射TicketAdmin
到UserProfile
id ( UserProfile.UserId = TicketAdmin.Id
)
谢谢你的时间!
更新:我刚刚尝试创建一个空数据库,这个 shema 发现它创建UserProfile.UserId
了一个外键列,但我需要TicketAdmin.Id
成为一个 FK 列。(就像所有用户都有 UserProfile,但不是每个人都有 TicketAdmin 设置,并且 TicketAdmin 是 UserProfile 的子级并且具有与 UserProfile ID 相同的 ID)。