Я использую подход с кодом сначала с инфраструктурой сущностей, и я хотел бы знать, будет ли работать этот код ниже? и если да, то рекомендуется ли добавлять записи по нескольким таблицам в одну метод с использованием структуры сущностей? Пожалуйста, поделитесь с нами своими мыслями. Спасибо
public void InsertRecords(Student student, Teacher teacher, Parent parent)
{
context.Students.Add(student);
context.Teachers.Add(teacher);
context.Parents.Add(parent);
}
Хотя вы получите несколько разных ответов по этой теме, если этот метод соответствует вашим потребностям в программе, тогда, во что бы то ни стало, используйте один метод для вставки записей. Хотя это может сработать в первый раз, вы можете столкнуться с проблемами, когда вам нужно обновить модель 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 в своем исходном посте.
Спасибо за ваш вклад, но я хотел бы подтвердить. Сможет ли он сохранять записи во все 3 таблицы одним методом? правильно?
@timmack да, ваш метод вставки записей теперь может содержать все три фабричных метода. вместо context.Teachers.Add
вы можете использовать Teachers.Insert(Teacher)
Students.Insert(student)
и Parent.Insert(parent)
, пока на все три таблицы ссылаются в одном методе. фактическая вставка/обновление происходит тремя отдельными методами. Это улучшит отладку и ООП. Имеет ли это смысл?
Отлично... Я понимаю ваше беспокойство по поводу разбиения моделей на фабричный метод, но есть цель, почему я бы использовал один метод вставки для нескольких таблиц. Спасибо
Вам не хватает CommitChanges