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

时间:2011-11-21 22:53:05

标签: c# asp.net-mvc-3 entity-framework entity-framework-4.1

我想创建以下关系。显然这是基本的痛苦,但是由于EF,我在第一个障碍中摔倒了。在我的数据库SubForm中,主键Id是引用Application.Id的外键(强制执行关系)。当我添加一个新的Application EF抱怨我没有SubForm_Id行时,我不希望这样,因为这显然是主键的副本。我可以在模型中添加一些注释来对其进行排序吗?

这让我想到另一个问题,如果我想同时向数据库添加一个新ApplicationSubForm - 我怎么能获取 Application Id(它在db中定义为自动增量int)在SubForm对象上设置它,或者EF可以为我做这个吗?

帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

按惯例,EF假定当您具有类型Application的导航属性时,SubForm_Id表具有标量属性SubForm。您需要显式配置共享主键映射。

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

您可以按如下方式插入

var app = new Application();
var subForm = new SubForm { Application = app };
db.SubForms.Add(subForm);
db.SaveChanges();