我想创建以下关系。显然这是基本的痛苦,但是由于EF,我在第一个障碍中摔倒了。在我的数据库SubForm
中,主键Id
是引用Application.Id
的外键(强制执行关系)。当我添加一个新的Application
EF抱怨我没有SubForm_Id
行时,我不希望这样,因为这显然是主键的副本。我可以在模型中添加一些注释来对其进行排序吗?
这让我想到另一个问题,如果我想同时向数据库添加一个新Application
新SubForm
- 我怎么能获取 Application Id
(它在db中定义为自动增量int)在SubForm
对象上设置它,或者EF可以为我做这个吗?
帮助将不胜感激。
答案 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();