如何在表之间实现正确的关系?

时间:2018-05-25 14:47:31

标签: sql asp.net database relational-database entity-framework-core

大家好,

我计划更改公司的当前后端。我计划使用asp.net coreef core创建新的网络服务。说实话,我坚持使用这种架构。

我不知道如何实现Entity Framework表之间的关系。员工不止一个职位。我不想为此架构实现角色层。所以我创建了这样的表:员工收银员打包者,等等。并按照以下方式设计:{ {1}}  但是我在某处读过没有办法在sql中使用1对1的关系。那么我该如何实现这种关系呢?

ER图: Entity Relationships

1 个答案:

答案 0 :(得分:0)

如果您使用的是SQL Server,那么我同意,它不可能建立真正的一对一关系。

关系需要是1:0..1,因为你需要先插入一行,然后再插入一秒。在一段最短的时间内,关系将为1:0,然后将切换为1:1。

要实现真正的1对1,您需要使用名为约束延迟标准 SQL功能。不幸的是,据我所知,此功能仅在PostgreSQL和Oracle数据库中可用。在这些数据库上,您可以真正拥有1:1的关系,因为约束不是在每个行插入时验证,而是在事务结束时验证。

话虽如此,我也不会太在意。如果您使用数据库事务执行插入,那么我不明白为什么这会导致任何问题。使用类似的过程:

  1. 开始交易。

  2. 在表格Employee上插入。

  3. 在表格Cashier上插入。

  4. 提交交易。

  5. 这应该确保你永远不会有一个没有相关表格的悬空员工。