【发布时间】:2022-01-22 15:55:19
【问题描述】:
我正在尝试在 EF Core 3.1 中与 ondelete 级联建立 1 对 0 或 1 关系。
这是必须具有(可选/可为空)FbUser 属性的 IdentityUser(原则实体)的扩展。
public class PtUser : IdentityUser<int>
{
[PersonalData]
[Column(TypeName = "nvarchar(100)")]
public string FirstName { get; set; }
[PersonalData]
[Column(TypeName = "nvarchar(100)")]
public string LastName { get; set; }
public FbUser FbUser { get; set; }
}
public class FbUser
{
[Key]
[Required]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string FbUserId { get; set; }
public string Name { get; set; }
public string FbEmail { get; set; }
public PtUser PtUser { get; set; }
public int PtUserId { get; set; }
}
我如何配置它,如果 PtUser 已链接他们的 Facebook 帐户,他们的 FbUser.FbUserId 将成为 PtUsers 表中的外键,并且当该 PtUser 被删除时,此删除将级联到关联的 FbUsers 表行。
public class PtDbContext : IdentityDbContext<PtUser, PtRole, int>
{
public PtDbContext(DbContextOptions<PtDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<PtUser>()
.HasOne(a => a.FbUser)
.WithOne(b => b.PtUser)
.HasForeignKey<FbUser>(b => b.PtUserId)
.OnDelete(DeleteBehavior.Cascade);
}
public DbSet<FbUser> FbUsers { get; set; }
}
【问题讨论】:
-
你可以参考这个帖子:stackoverflow.com/questions/66846195/…
标签: asp.net-mvc entity-framework asp.net-core entity-framework-core foreign-keys