使用Entity Framework Core,将数据插入一个或多个包含第一个表的外键的新rcord到多个表中的最佳方法是什么?
给出以下实体:
public class ParentEntity
{
public int Id {get; set;}
public string Name {get; set;}
}
public class ChildEntity
{
public int Id {get; set;}
public int ParentId {get; set;}
public string Name {get; set;}
}
我知道我可以使用此方法插入数据:
var parentEntity = new ParentEntity {Name = "Mom"};
var childEntity = new ChildEntity {Name = "Junior"};
await db.Parents.AddAsync(parentEntity);
childEntity.ParentId = parentEntity.Id;
await db.Children.AddAsync(childEntity);
await _context.SaveChangesAsync();
但是我可以看到这不会很好地扩展。我现在正在学习EF Core,找不到更好的方法来解决这个问题。
答案 0 :(得分:2)
如果您真的只需要使用外键,那就是您应该这样做的方式。这就像手动SQL查询一样。
但是EF支持navigation property的概念。因此,您可以像这样定义类:
public class ParentEntity
{
public int Id {get; set;}
public ICollection<ChildEntity> Children { get; } = new List<ChildEntity>();
}
public class ChildEntity
{
public int Id {get; set;}
public int ParentId {get; set;}
}
然后像这样使用它
var parentEntity = new ParentEntity();
parentEntity.Children.Add(new ChildEntity());
context.Parents.Add(parentEntity); // parent and its children gets added
context.SaveChanges();