0

我在我的应用程序中遇到了一个场景,我希望实体之间具有 1:1 的多重性,但我不知道如何修改我的数据库来确保这一点。

假设我有一个 Document 表和一个 Index 表,其中 Document 总是有一个 Index,并且 Index 只会包含在一个 Document 中。在 Document 表中,我有一个 IndexID 字段,因此 Document 实体有一个指向其索引的导航属性,但 Index 实体有一个名为 Documents 的集合导航属性,这不是我想要的,因为只会有一个相关的 Document。

以某种方式编辑我的数据库架构会很好,这样当我从数据库生成模型时,文档实体有一个到索引的导航并且索引有一个导航属性返回到文档。这样的事情可能吗?

我想我可能可以在模型设计图面上编辑实体模型或其关联来实现这一点。但我担心在某个阶段如果我重新加载模型,它会重置这个和任何其他类似的。

是否有一个优雅的解决方案可以让 EF 自动实现 1:1 的多重性?

感谢您的任何建议!

4

1 回答 1

1

您的数据库没有对 Document 和 Index 之间的 1:1 关系进行建模,因此 EF 也没有对其进行建模。要使用 1:1,您的文档和索引必须共享主键。这意味着您将使用一些 PK(可能是自动生成的)定义 Document,您将使用相同类型的 PK 定义 Index,您还将定义 FK,双方的 PK 都将参与其中。这将强制文档和索引之间的 1:0..1 关系。0..1 是因为您总是需要先插入 Document ,然后再插入 Index (文档将在几分之一秒内没有索引)。强制 Document 始终与 Index 一起插入是您的应用程序逻辑责任。

于 2011-02-22T13:14:59.073 回答