14

我正在使用 Entity Framework 4.1 数据库优先方法。我使用过旧数据库。在我基于旧数据库中的表创建实体类的 edmx 文件中,某些实体之间存在一对零或一的关联。

虽然我探索了数据库表和它们之间的关系,但我没有发现一对零或一关系是如何在数据库中实现的。

有关更多信息,我将我的数据库图的一些屏幕截图及其关系和对应实体的属性放在 edmx 文件中:

在此处输入图像描述 在此处输入图像描述

4

2 回答 2

32

数据库中的 1-0..1 关系是直接可见的。它建立在 Course 和 OnlineCourse 表之间,其中 Course 是关系 (1) 的主体, OnlineCourse 依赖于在 CourseID 上配置的 FK。FK 也是 OnlineCourse 的 PK = 它必须是唯一的,因此它是 0..1。

数据库“总是”使用 1 - 0..1,因为真正的 1 - 1 不能有效地用于数据插入。1 - 1 表示左边必须插在右边,但右边必须插在左边 = 不可能。因为 1 - 0..1 用于左为主的地方,必须在右之前插入,而右是从属的,必须在左之后插入。

于 2011-10-04T08:09:05.690 回答
1

如果数据库表已经设计为具有 1:1 关系(或 1:0-1),那么 EF 可以很好地使用它,尽管它会使子表的名称复数(如果你让它复数)。

基本方法是创建一个外键(就好像你正在建立一个 1:many 关系),然后在外键字段上放置一个唯一索引。这就是你的目标吗?

这也可能有所帮助:在 SQL Server 中设计 1:1 和 1:m 关系

附带说明一下,1-1 关系通常不是必需的和/或需要重新考虑的数据库设计的症状。但是,听起来你继承了设计......我知道这一切!

于 2011-10-04T06:57:03.677 回答