【问题标题】:Entity Framework - Change Relationship Multiplicity实体框架 - 更改关系多重性
【发布时间】:2010-12-16 03:18:12
【问题描述】:

我的数据库中有一个表 [User] 和另一个表 [Salesperson]。 [Salesperson] 定义了一个 unique 用户 ID,它使用外键映射到 [User].UserID。当我使用 Entity Framework 生成模型时,我得到 [User]-[Salesperson] 之间的一对多关系,这意味着每个用户都有一个“销售人员集合”,但我想要的是 0..1-to -1 关系,其中每个用户都有对“销售人员”的可为空引用。

我尝试摆弄 XML 并更改关联的多重性设置,但这只会产生构建错误。我想要实现的目标与在 [User] 中引用 [Salesperson].SalespersonID 的可为空的 SalespersonID 没有什么不同,但是因为销售人员只针对特定用户存在,所以感觉就像我只是弄乱了我的 [User] 表结构让关系在实体框架中指向正确的方向。

我能做些什么来改变关系的多样性吗?

【问题讨论】:

  • 您能否提供更多信息。什么ORM?您当前的配置是什么样的?
  • 我不确定你在问什么?我正在使用带有 MySQL 数据库的实体框架。你指的是什么“配置”?
  • 哦,对不起,我想当您说实体框架时,您使用的是对象关系映射器的通用术语。不是特定的产品。
  • 是否可以选择更改数据库架构?
  • 是的克雷格,改变架构不是不可能的。你有什么建议?

标签: entity-framework database-design entity-relationship multiplicity


【解决方案1】:

使Salesperson 的PK 本身成为User 的FK。然后 EF 的 GUI 设计器将得到正确的基数,因为 PK 是唯一的。

【讨论】:

  • 如果你愿意,你可以称它为 SalespersonId,但因为 FK Salesperson.SalespersonId == User.UserId,不管它叫什么。 GUI 设计者然后可以推断出正确的基数,并且 DB 将强制执行它。
  • 我还没有测试过这个,但是一旦我这样做了,我会标记答案(假设它有效!)。万分感谢。 :)
  • 重生前有没有关系?在新桌子上试一试。这确实对我们有用。此外,如果 User.UserId 不是 PK,请尝试使用 PK。 EF 的 GUI 设计者可能会看到 PK,但看不到唯一约束。
  • 我注意到,如果存在唯一性约束,EF 会发出与没有唯一性约束时不同的代码。看起来很奇怪...
  • 理论:这种关系存在于客户端模式中,只有在商店模式“显着”变化时才会更新(即使是小块)。这个想法是保留您的更改,其中可能包括对关系的更改。商店模式总是从头开始重新生成。此处存储架构中的更改可能不会(由 GUI)检测为“显着”,足以导致客户端架构发生变异,再次尝试并保留您可能所做的更改。但是当你重新生成它时,它会在存储模式中获取约束。
猜你喜欢
  • 1970-01-01
  • 2014-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-28
相关资源
最近更新 更多