Вставка записей в несколько таблиц в одном методе с использованием Entity Framework - PullRequest
0 голосов
/ 19 июня 2019

Я использую первый подход к коду с сущностью, и я хотел бы знать, будет ли работать этот код ниже?и если да, то рекомендуется ли добавлять записи для нескольких таблиц в одном методе с использованием структуры сущностей?Пожалуйста, дайте нам свои мысли.Спасибо

 public void InsertRecords(Student student, Teacher teacher, Parent parent)
 {
     context.Students.Add(student);
     context.Teachers.Add(teacher);
     context.Parents.Add(parent);
 }

1 Ответ

1 голос
/ 19 июня 2019

Несмотря на то, что вы получите несколько разных ответов на эту тему, если этот метод соответствует вашим потребностям в программе, во что бы то ни стало, используйте один метод для вставки записей. Хотя это может сработать в первый раз, вы можете столкнуться с проблемами, когда вам нужно обновить модель Student Teacher или Parent, поскольку вы не можете просто добавить одну и ту же запись дважды в зависимости от вашей Primary/Foreign Key Relations.

Лично я бы разбил три модели на заводские методы следующим образом (я выложу один пример, а остальные могут последовать)

public class Teacher
{
    public void Insert(Teacher entity)
    {
         //Initialize DB context here
         context.Teachers.Add(entity);
         context.SaveChanges();
    }

   public void Update(Teacher entity)
   {
         //Initialize DB context here
         context.Teachers.Attach(entity);
         context.Entry(entity).State = System.Data.Entity.EntityState.Modified;
         context.SaveChanges();
   }
}

Этот код не является строкой того, что вы должны иметь в своем приложении, но он представляет собой прочную основу для того, как вы можете вставлять и обновлять записи на основе заводских классов. Вам нужно будет включить обработку ошибок и отчеты об успехах, но я хотел бы дать вам общее представление о том, как вы можете использовать этот метод InsertRecords в своем исходном сообщении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...