Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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
C# 实体框架与RequiredPrinciple的一对一关系无依赖实体保存实体_C#_Sql Server_Entity Framework_C# 4.0 - Fatal编程技术网

C# 实体框架与RequiredPrinciple的一对一关系无依赖实体保存实体

C# 实体框架与RequiredPrinciple的一对一关系无依赖实体保存实体,c#,sql-server,entity-framework,c#-4.0,C#,Sql Server,Entity Framework,C# 4.0,我正在实体框架中使用代码优先的方法实现一对一关系。下面是我的模型 public class Course { public int CourseId { get; set; } public string CourseName { get; set; } public virtual Caption Caption { get; set; } } 这个呢 public class Caption { public int CaptionId { get;

我正在实体框架中使用代码优先的方法实现一对一关系。下面是我的模型

public class Course
{
    public int CourseId { get; set; }
    public string CourseName { get; set; }

    public virtual Caption Caption { get; set; }

}
这个呢

public class Caption
{

    public int CaptionId { get; set; }
    public string CaptionDesc { get; set; }
    public virtual Course Course { get; set; }
}
在上下文中,我使用了以下代码

modelBuilder.Entity<Course>().HasRequired(c => c.Caption).WithRequiredPrincipal(c => c.Course);
modelBuilder.Entity().HasRequired(c=>c.Caption)。WithRequiredPrincipal(c=>c.Course);
在阅读本文时,他们说,假设您保存的课程实体没有标题,那么将抛出异常,实体框架不允许您存储实体。但当我这么做的时候,我没有任何例外。我可以存储这两个实体而不需要任何依赖项。请告诉我我做错了什么。我使用的是实体框架6


编辑:表如下所示

只有当表共享主键时,实体框架中的1:1关系才受支持。查看本文以了解帮助:

entity framework中的1:1关系仅在表共享主键时才受支持。查看这篇文章以帮助理解:

您没有将任何
主键
外键
放在显示其约束的表上。SQL Server SSMS中的表看起来如何?他不需要这样做。Courseid和CaptionId遵循约定,所以EF很聪明,可以告诉你。这就是我的想法,但是如果他插入的行没有
标题
,那么他不应该明确地强制执行与
外键
的关系吗?从技术上讲,你不能在SQL Server中执行1:1。看见链接中描述了通常的方法:将CourseId(并删除CaptionId)添加到标题表中,并使CourseId同时成为主键和外键。您没有在任一表上放置任何显示其约束的
主键
外键
。SQL Server SSMS中的表看起来如何?他不需要这样做。Courseid和CaptionId遵循约定,所以EF很聪明,可以告诉你。这就是我的想法,但是如果他插入的行没有
标题
,那么他不应该明确地强制执行与
外键
的关系吗?从技术上讲,你不能在SQL Server中执行1:1。看见链接中描述了通常的方法:将CourseId(并删除CaptionId)添加到标题表中,并使CourseId同时成为主键和外键。