Определенно метод 2 .
Почему?Потому что Rsvp не может существовать без Обед .В этих отношениях Dinner является родителем - и если бы мы создали репозиторий, мы бы создали DinnerRepository (поскольку Dinner - это «совокупный корень» в терминах DDD)
Что касается вашей заметки - да, это поведение, которого можно избежать, - вам не нужно выставлять внешние ключи модели.Этот параметр доступен при создании / обновлении модели.
Таким образом, отношения должны создаваться / изменяться с помощью сущности:
Rsvp r = new Rsvp();
r.AttendeeName = "xport";
r.DinnerId = 10000; // this throws a compiler error. good! we do not want people tinkering with FK's.
Dinner d = entities.Dinners.First(x => x.DinnerId == 1);
d.Rsvps.Add(r); // this is the correct way to add a RSVP
entities.SaveChanges();
Другими словами - единственный способсоздать / изменить Rsvp с помощью Dinner - и свойство FK не может быть изменено.
Что имеет смысл.