首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实体框架代码首先跨多个表的唯一约束

实体框架代码首先跨多个表的唯一约束
EN

Stack Overflow用户
提问于 2015-03-23 18:11:31
回答 1查看 1K关注 0票数 2

因此,我使用实体框架的Code范式创建了一个数据库模型,并试图创建两个表(Player、Teams),它们必须共享关于主键的唯一性约束。

例如,我有3个Id "1“、"2""3"的玩家,当我尝试创建一个Id "2"的团队时,系统应该验证唯一性并失败,因为已经存在一个Id "2"的球员。

通过数据注释,这是可能的吗?这两个实体共享一个名为IParticipant的公共接口,如果这有帮助的话!

预备役队员们!

EN

Stack Overflow用户

回答已采纳

发布于 2015-03-23 18:33:41

您在这里描述的场景并不理想。这实际上并不是对实体框架的限制,而是对数据库堆栈的限制。默认情况下,Id主键是一个标识列,而SQL本身并不真正支持“共享”标识列的概念。您可以禁用标识并自行管理Id属性,但实体框架无法自动为实体构建导航属性。

这里最好的选择是使用一个participant表,使用一种称为“每个层次结构表”的技术,即TPH。实体框架可以使用内部鉴别器列管理单个表。共享属性可以放在基类中,而非共享属性可以放在单独的类中,实体框架将组合成DB中的单个大表。此策略的主要缺点是,非共享属性的列在数据库中将自动为空。这篇文章很好地描述了这个场景。

我越努力想出一个解决方案,我就意识到这是XY问题的一个例子。这个问题并没有一个很好的解决方案,因为这个问题已经是提出的解决方案。这里有一个问题导致您创建了一个接口,您建议需要--使用该接口的实体--拥有一个唯一的Id。这听起来确实像是接口本身的设计问题,因为接口对于应用到的实体应该是不可知论的。也许提供一些代码并展示您的问题实际上是有帮助的,因为您在这里提出的解决方案实际上并不实用。

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29217412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档