【问题标题】:EF Core 3.1 Code First Table with many self referencing relation具有许多自引用关系的 EF Core 3.1 Code First Table
【发布时间】:2020-05-01 15:58:59
【问题描述】:

我没有找到这个问题的 EF Core 解决方案,我只找到了较旧的 EF 版本,而不是 CORE。

我有以下情况:

公司有一张 Employee 表。

int EmployeeID
字符串名字
字符串姓氏

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

现在的问题是,在 EF Core 中,处理此问题的最佳方法是什么?请记住,一名员工可以拥有多个经理,一名助理可以属于多个经理。那么这可以先在一个表中编码,还是必须拆分?

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

当我测试这个时,它显然不起作用,你只是在互联网上找不到很多关于这个的好信息......我想这是没有多少人去尝试分裂的东西越多越好?就像制作 Employee 表、Manager 表一样,您可以在其中链接 ManagerId 以匹配 EmployeeId 并制作像 EmployeeManager 这样的连接表。
只是想知道在一个带有某些注释的表中是否仍然可能。

我想知道如果你先去 DB 会怎么做……

感谢您深入了解 EF Core 的世界!

【问题讨论】:

  • 这是继承和自引用的组合,它看起来像雇员之间的多对多,所以你需要一个关联类。

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


【解决方案1】:

好的,我其实是先在 DB 中尝试过的,这样我就可以向逆向工程师学习纯 POCO

这是 slq 查询:

创建表员工 ( EmployeeId INT NOT NULL, 姓 NVARCHAR(100), GivenName NVARCHAR(100), 电子邮件地址 VARCHAR(254), 合同类型 CHAR(1), LeaveTimeRemaining DECIMAL(4,2), LeaveTimeTaken DECIMAL(4,2), 主键 (EmployeeId) );

创建表 ApproverEmployee ( ApproverId INT REFERENCES 员工(EmployeeId), EmployeeId INT REFERENCES 员工(EmployeeId), 约束 FK_ApproverEmployee 主键 (ApproverId,EmployeeId) );

CREATE TABLE ApproverAssistant ( AssistantId INT REFERENCES 员工(EmployeeId), ApproverId INT REFERENCES 员工(EmployeeId), CONSTRAINT FK_ApproverAssistant PRIMARY KEY (ApproverId,AssistantId) );

创建表 EmployeeRecords ( EmployeeRecordId INT NOT NULL IDENTITY(1,1) 主键, 员工 ID INT, 记录消息 NVARCHAR(254), RecordModifiedDate SMALLDATETIME, RecordModifiedById INT, 外键(EmployeeId)参考员工(EmployeeId), 外键 (RecordModifiedById) 参考员工 (EmployeeId) );

这样我保存了表格,因为审批人和助理的信息都在员工表格中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多