Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SQL Server中实现一对零或一关系_Sql Server_Sql Server 2008_Entity Framework 4.1_Entity Relationship_Relation - Fatal编程技术网

Sql server 在SQL Server中实现一对零或一关系

Sql server 在SQL Server中实现一对零或一关系,sql-server,sql-server-2008,entity-framework-4.1,entity-relationship,relation,Sql Server,Sql Server 2008,Entity Framework 4.1,Entity Relationship,Relation,我使用EntityFramework4.1数据库优先的方法。我使用了遗留数据库。在基于旧数据库中的表创建实体类的我的edmx文件中,某些实体之间存在一对零或一关联 虽然我研究了数据库的表以及它们之间的关系,但我并没有发现数据库中是如何实现一对零或一关系的 有关更多信息,我在edmx文件中放置了一些数据库图的屏幕截图及其关系和对应实体的属性: 如果数据库表已经设计成1:1关系(或1:0-1),那么EF可以很好地使用它,尽管它会将子表的名称复数化(如果让它复数化) 基本方法是创建一个外键(就像创建

我使用EntityFramework4.1数据库优先的方法。我使用了遗留数据库。在基于旧数据库中的表创建实体类的我的edmx文件中,某些实体之间存在一对零或一关联

虽然我研究了数据库的表以及它们之间的关系,但我并没有发现数据库中是如何实现一对零或一关系的

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


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

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

这可能也有帮助:


另一方面,1-1关系通常不是必需的,并且/或者是需要重新考虑的数据库设计的症状。然而,听起来你继承了这个设计。。。我知道这一切

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


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

我在拥有子表ID的表中添加了一个NOTNULL列,并添加了一个delete触发器以确保删除子表。这样,我可以确保所属表正好有一个引用。