使用 Fluent API 编写一对一关系
Writing One to one relationship using Fluent API
如何使用流利的api写one-to-one--or-zero
关系?有人可以帮我纠正我所写的内容。我不确定它是否正确。
场景:一个学生可以有一个或零个地址。
学生模型
public int Id{ get; set; }
public string Name{ get; set; }
public Address Address{ get; set; }
地址模型
public int Id { get; set; }
public string Street{ get; set; }
public int StudentId { get; set; }
public Student Student { get; set; }
我尝试了什么:
builder.HasOne(u => u.Address)
.WithOne(b => b.Student)
.HasForeignKey<Address>(b => b.StudentId);
如果是 one-to-one--or-zero
关系,您不需要额外的 PrimaryKey
以及依赖 table 的 ForeignKey
。 Principle
table 的 Primarykey
也将同时成为受抚养人 table 的 PrimaryKey
和 ForeignKey
。
所以写你的Address
模型class如下:
public class Address
{
public int StudentId { get; set; } // Here StudentId is the PrimaryKey and ForeignKey at the same time.
public string Street{ get; set; }
public Student Student { get; set; }
}
然后在Fluent API
配置中:
public class AddressConfiguration : IEntityTypeConfiguration<Address>
{
public void Configure(EntityTypeBuilder<Address> builder)
{
builder.HasKey(u => u.StudentId)
builder.HasOne(u => u.Student)
.WithOne(b => b.Address)
.HasForeignKey<Address>(b => b.StudentId);
}
}
要使用 fluent api 配置 Student 和 Address 实体之间的 one-to-zero-or-one
关系,您可以使用 HasOptional(s => s.Address)
方法,如
modelBuilder.Entity<Student>()
.HasOptional(s => s.Address) // Address property is optional in Student entity
.WithRequired(ad => ad.Student); // Student property is required
如何使用流利的api写one-to-one--or-zero
关系?有人可以帮我纠正我所写的内容。我不确定它是否正确。
场景:一个学生可以有一个或零个地址。
学生模型
public int Id{ get; set; }
public string Name{ get; set; }
public Address Address{ get; set; }
地址模型
public int Id { get; set; }
public string Street{ get; set; }
public int StudentId { get; set; }
public Student Student { get; set; }
我尝试了什么:
builder.HasOne(u => u.Address)
.WithOne(b => b.Student)
.HasForeignKey<Address>(b => b.StudentId);
如果是 one-to-one--or-zero
关系,您不需要额外的 PrimaryKey
以及依赖 table 的 ForeignKey
。 Principle
table 的 Primarykey
也将同时成为受抚养人 table 的 PrimaryKey
和 ForeignKey
。
所以写你的Address
模型class如下:
public class Address
{
public int StudentId { get; set; } // Here StudentId is the PrimaryKey and ForeignKey at the same time.
public string Street{ get; set; }
public Student Student { get; set; }
}
然后在Fluent API
配置中:
public class AddressConfiguration : IEntityTypeConfiguration<Address>
{
public void Configure(EntityTypeBuilder<Address> builder)
{
builder.HasKey(u => u.StudentId)
builder.HasOne(u => u.Student)
.WithOne(b => b.Address)
.HasForeignKey<Address>(b => b.StudentId);
}
}
要使用 fluent api 配置 Student 和 Address 实体之间的 one-to-zero-or-one
关系,您可以使用 HasOptional(s => s.Address)
方法,如
modelBuilder.Entity<Student>()
.HasOptional(s => s.Address) // Address property is optional in Student entity
.WithRequired(ad => ad.Student); // Student property is required