【发布时间】:2020-12-03 20:57:29
【问题描述】:
我开始生成 2 个外键。我该如何解决这个问题?我的代码如下:
注意:与 Person 和 User 的关联是 1-to-1-or-0。 User 可能有也可能没有Person。
public class User : Entity
{
public string Name { get; set; }
public Person Person { get; set; }
}
public class Person: Entity
{
public string FirstName { get; set; }
public string LastName { get; set; }
public User User { get; set; }
public ICollection<PersonSchool> PersonSchool{ get; set; }
}
实体配置:
public class UserEntityConfiguration : IEntityTypeConfiguration<User>
{
public void Configure(EntityTypeBuilder<User> builder)
{
builder.ToTable("User");
builder.HasKey(c => c.Id);
builder.Property(c => c.Name).IsRequired(true);
}
}
public class PersonEntityConfiguration : IEntityTypeConfiguration<Person>
{
public void Configure(EntityTypeBuilder<Person> builder)
{
builder.ToTable("Person");
builder.HasKey(c => c.Id);
builder.Property(c => c.FirstName).IsRequired(true);
builder.Property(c => c.LastName).IsRequired(true);
builder.HasOne(i => i.User)
.WithOne()
.HasForeignKey<Person>(rl => rl.UserId)
.OnDelete(DeleteBehavior.Restrict);
}
}
结果:
我正在从迁移代码中复制部分 sn-p。如您所见,创建了 2 个外键,UserId 和 UserId1
constraints: table =>
{
table.PrimaryKey("PK_Person", x => x.Id);
table.ForeignKey(
name: "FK_Person_User_UserId",
column: x => x.UserId,
principalTable: "User",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_Person_User_UserId1",
column: x => x.UserId1,
principalTable: "User",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
【问题讨论】:
标签: c# entity-framework .net-core