Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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# 实体框架中的1到0..1关系_C#_Asp.net Mvc 3_Entity Framework_Entity Framework 4.1 - Fatal编程技术网

C# 实体框架中的1到0..1关系

C# 实体框架中的1到0..1关系,c#,asp.net-mvc-3,entity-framework,entity-framework-4.1,C#,Asp.net Mvc 3,Entity Framework,Entity Framework 4.1,我想创建以下关系。显然,这是痛苦的基础,但我在第一个障碍下降感谢EF。在我的数据库子表单中的主键Id,是引用应用程序.Id(强制关系)的外键。当我添加一个新的应用程序时EF抱怨我没有子表单Id行,我不希望这样,因为这显然是主键的重复。我可以给模型添加一些注释来解决这个问题吗 这给我带来了另一个问题,如果我想同时向数据库添加一个新的应用程序和一个新的子表单,我如何才能获得应用程序Id(它在数据库中定义为自动增量int)来在子表单对象上设置它,或者EF可以为我这样做吗 如果您有SubForm类型的

我想创建以下关系。显然,这是痛苦的基础,但我在第一个障碍下降感谢EF。在我的数据库
子表单中
的主键
Id
,是引用
应用程序.Id
(强制关系)的外键。当我添加一个新的
应用程序时
EF抱怨我没有
子表单Id
行,我不希望这样,因为这显然是主键的重复。我可以给模型添加一些注释来解决这个问题吗

这给我带来了另一个问题,如果我想同时向数据库添加一个新的
应用程序
和一个新的
子表单
,我如何才能获得
应用程序Id
(它在数据库中定义为自动增量int)来在
子表单
对象上设置它,或者EF可以为我这样做吗


如果您有
SubForm
类型的导航属性,则按惯例,EF假定您的
应用程序
表具有标量属性
子表单Id
。您需要显式配置共享主键映射

public class MyContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
         modelBuilder.Entity<Application>()
           .HasOptional(a => a.SubForm)
           .WithRequired(s => s.Application);
    }
 }

您是否将EF 4.1与DbContext API一起使用?这已经起作用了,谢谢。我假设不可能添加根实体应用程序并因此添加子表单对象?如果这是正确的,为什么会是这种情况?@st3它可能工作
var app=new Application{SubForm=new SubForm()};db.Applications.Add(app)
var app = new Application();
var subForm = new SubForm { Application = app };
db.SubForms.Add(subForm);
db.SaveChanges();