我有两个类Student
和Staff
,它们都包含一个字段Address
。因此,Student
与Address
之间将存在一对一的关系,Staff
与Address
之间的关系将为1:1。我在定义这段关系时遇到了麻烦。
我试过了:
modelBuilder.Entity<Student>().HasOne(student => student.Address)
.WithOne(stdAddress => stdAddress.Student)
.HasForeignKey<Address>(stdAddress => stdAddress.StudentId);
modelBuilder.Entity<Staff>().HasOne(staff => staff.Address)
.WithOne(Address => Address.Staff)
.HasForeignKey<Address>(Address => Address.StaffId);
但是当我尝试迁移时,我收到了错误(这实际上有效,完全清除了数据库!)
然后我做了一些搜索并找到this。
然而,当我尝试这段代码时
modelBuilder.Entity<Address>()
.HasRequired(a => a.Student)
.WithOptionalDependent(s => s.Address);
我在HasRequired下面有一条红线,没有快速修复它。
我看到这个post谈论使用额外的表来实现它,但我尽量避免这种情况。
另外,我能想到的另一个解决方案是,创建一个名为Person
的抽象类,让学生和员工继承它,并将{1}}中的1对1映射到{{1} }。但这将是备份计划,我更喜欢使用Fluent API(对吗?)方式。
有什么建议吗?