Как вставить данные в несколько таблиц с внешним ключом, используя ядро ​​EF? - PullRequest
1 голос
/ 12 июня 2019

Каков наилучший способ вставки данных в несколько таблиц с одной или несколькими новыми записями, содержащими внешний ключ к первой таблице, с использованием Entity Framework Core?

Учитывая эти объекты:

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 прямо сейчас и не могу найти лучший способ справиться с этим.

1 Ответ

2 голосов
/ 12 июня 2019

Если вам ДЕЙСТВИТЕЛЬНО нужно просто использовать внешний ключ, то это то, как вы должны это делать ... это похоже на выполнение ручных SQL-запросов.

Но EF поддерживает концепцию свойства навигации . Таким образом, вы можете определить свои классы как:

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...