我计划更改公司的当前后端。我计划使用asp.net core和ef core创建新的网络服务。说实话,我坚持使用这种架构。
我不知道如何实现Entity Framework表之间的关系。员工不止一个职位。我不想为此架构实现角色层。所以我创建了这样的表:员工,收银员,打包者,等等。并按照以下方式设计:{ {1}} 但是我在某处读过没有办法在sql中使用1对1的关系。那么我该如何实现这种关系呢?
ER图: Entity Relationships
答案 0 :(得分:0)
如果您使用的是SQL Server,那么我同意,它不可能建立真正的一对一关系。
关系需要是1:0..1,因为你需要先插入一行,然后再插入一秒。在一段最短的时间内,关系将为1:0,然后将切换为1:1。
要实现真正的1对1,您需要使用名为约束延迟的标准 SQL功能。不幸的是,据我所知,此功能仅在PostgreSQL和Oracle数据库中可用。在这些数据库上,您可以真正拥有1:1的关系,因为约束不是在每个行插入时验证,而是在事务结束时验证。
话虽如此,我也不会太在意。如果您使用数据库事务执行插入,那么我不明白为什么这会导致任何问题。使用类似的过程:
开始交易。
在表格Employee
上插入。
在表格Cashier
上插入。
提交交易。
这应该确保你永远不会有一个没有相关表格的悬空员工。