具有许多自引用关系的EF Core 3.1代码第一表

时间:2020-05-01 15:58:59

标签: entity-framework-core ef-core-3.1

我没有找到针对此问题的EF Core解决方案,我只发现了较旧的EF版本,而不是CORE。

我有以下情况:

公司有一个表Employee。

int EmployeeID
字符串FirstName
字符串LastName

现在,每位员工还可以是经理或助理,也可以是... 但是,当然,经理也是员工。 雇员有一个或多个经理,一个经理可以有一个助手,但是一个助手可以属于多个经理。大多数员工没有助理。

现在,在EF Core中,解决此问题的最佳方法是什么?请记住,一个雇员可以有多个经理,一个助理可以属于多个经理。那么是否可以先在一个表中编写代码,还是必须将其拆分?

例如: 员工表,我们添加:
虚拟列表助手 虚拟列表管理器

当我对此进行测试时,它显然无法正常工作,只是您在互联网上找不到很多很好的信息...我想这是很多人不愿意尝试并尝试拆分的东西越多越好?就像制作Employee表一样,您可以在Manager表中链接ManagerId以匹配EmployeeId并创建一个联接表,例如EmployeeManager。
只是想知道在带有某些注释的一张表中是否仍然可行。

我想知道如果您先去DB会怎么样?

感谢您对EF Core的了解!

1 个答案:

答案 0 :(得分:0)

好吧,我实际上是先在数据库中尝试过的,所以我可以从反向工程师那里学习到普通的POCO

这是slq查询:

创建表员工( EmployeeId INT NOT NULL, 姓氏NVARCHAR(100), GivenName NVARCHAR(100), EmailAddress VARCHAR(254), ContractType CHAR(1), LeaveTimeRemaining DECIMAL(4,2), LeaveTimeTaken DECIMAL(4,2), 主键(EmployeeId) );

创建表ApproverEmployee( ApproverId INT参考:Employees(EmployeeId), EmployeeId INT参考:Employees(EmployeeId), 约束FK_ApproverEmployee主键(ApproverId,EmployeeId) );

创建表ApproverAssistant( AssistantId INT参考:Employees(EmployeeId), ApproverId INT参考:Employees(EmployeeId), 约束FK_ApproverAssistant主键(ApproverId,AssistantId) );

创建表EmployeeRecords( EmployeeRecordId INT非空IDENTITY(1,1)PRIMARY KEY, EmployeeId INT, RecordMessage NVARCHAR(254), RecordModifiedDate SMALLDATETIME, RecordModifiedById INT, 外键(EmployeeId)参考Employees(EmployeeId), 外键(RecordModifiedById)参考员工(EmployeeId) );

通过这种方式保存表,因为批准人和助手的信息都在员工表中。

相关问题