Database 使用实体框架添加子记录时遇到问题
我不理解如何添加实体框架中的记录,该实体框架是(或应该是)集合(父集合)的成员。当我将子类添加到数据库时,它的外键不会用父Id更新。我在模型中缺少了什么,或者在添加子记录后,我需要对上下文做什么来更新键 我有与以下类似的型号:Database 使用实体框架添加子记录时遇到问题,database,asp.net-core-mvc,entity-framework-core,Database,Asp.net Core Mvc,Entity Framework Core,我不理解如何添加实体框架中的记录,该实体框架是(或应该是)集合(父集合)的成员。当我将子类添加到数据库时,它的外键不会用父Id更新。我在模型中缺少了什么,或者在添加子记录后,我需要对上下文做什么来更新键 我有与以下类似的型号: [Table("Parents")] public class ParentClass{ public int Id {get; set;} public virtual ICollection<ChildClass> ChildClasses {ge
[Table("Parents")]
public class ParentClass{
public int Id {get; set;}
public virtual ICollection<ChildClass> ChildClasses {get; set;}
}
[Table("Children")]
public class ChildClass{
public int Id {get; set;}
public string Data {get; set;}
}
虽然添加了子记录,但它们具有父类的外键,但我不知道如何让Entity Framework在添加子记录后更新数据库中的该字段
我做错了什么?
ChildClass
至少应该有一个ParentId
属性(映射到数据库FK字段),也可能有一个ParentClass
属性。我在这里寻找参考:[link]所以,我应该更改我的ChildClass并包括这样的父类:>公共ParentClass parent{get;set;}也许可以将我的上下文类更改为可以在OnModelCreating中执行此操作?>modelBuilder.Entity().HasOne(p=>p.ParentClass).WithMany(b=>b.ChildClass)@GertArnold已经给了您答案,如果您想查看实体中的导航属性和键,您应该在ChildClass ParentClassId和ParentClass中编写。
using (var context = new DatabaseContext())
{
//a list of children gets created earlier...
foreach(var child in children)
{
if(child.id == 0) //a new child record
{
context.Children.Add(child);
}
else
{
context.Children.Update(child);
}
}
context.SaveChanges();
}