两个表之间的许多关系 - 代码优先

Posted

技术标签:

【中文标题】两个表之间的许多关系 - 代码优先【英文标题】:Many Relations Between 2 tables - Code First 【发布时间】:2021-11-05 08:42:54 【问题描述】:

我正在建立 2 个表之间的关系(代码优先 [实体框架])。但我有以下问题:

Employees 表保存了不同职位的员工(工程师、技术员、销售员等)。

在表项目中,我与表员工有3个关系

    经理 = 工程师职位的员工 技术员 = 拥有技术员职位的员工 销售员 (EmployeeId) = 担任销售员职位的员工

是否可以使用 EntityFrameWork 在两个表之间创建多个关系,或者我是否需要这样做(我不确定)。

但是,我要为与员工相关的职位创建一个表。

【问题讨论】:

这可能是一个很好的阅读***.com/a/63070166/2310830 对不起,我先看不到任何代码。请展示你到目前为止所做的事情。 我正在使用实体框架构建数据库。我知道如何在表之间构建外键(1 -1),但你如何看待我在同一个表中有 3 个关系(第二张图片)。是否可推荐在 2 个表之间建立 3 个关系或制作该次要表?这个问题与范式更相关 【参考方案1】:

如果您的项目表中有 3 个 Fk...您可以使用 fluent api 设置 3 个 Fk...

modelBuilder.Entity<product>()
            .HasOne<employees>(s => s.Eng)
            .WithMany(g => g.progectEng)
            .HasForeignKey(s => s.ProjectEngFK);

modelBuilder.Entity<product>()
            .HasOne<employees>(s => s.Tech)
            .WithMany(g => g.progectTech)
            .HasForeignKey(s => s.ProjectTechFK);

【讨论】:

感谢您的帮助!

以上是关于两个表之间的许多关系 - 代码优先的主要内容,如果未能解决你的问题,请参考以下文章

实体框架代码优先关系 - 如何定义两个对象之间的关系:两个实体之间的可选一对一

实体框架代码优先 - 来自同一个表的两个外键

2个表之间的关系 - 一对多和一对一(可空)EF代码优先

EF 核心。两个实体(表)之间的多个一对一或零关系

两个实体之间的代码优先外键

使用实体框架 4.1 代码优先方法将一对一的表关系映射到单个实体