实体框架代码首先,一个表与其他表

时间:2017-10-28 13:16:44

标签: c# database entity-framework database-design entity-framework-core

我有两个类StudentStaff,它们都包含一个字段Address。因此,StudentAddress之间将存在一对一的关系,StaffAddress之间的关系将为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(对吗?)方式。

有什么建议吗?

0 个答案:

没有答案