Модели .NET Core EF Core 2 в 1 Просмотр операции создания - PullRequest
0 голосов
/ 27 декабря 2018

Привет, я много читал, но не мог понять, как это сработает.После этого учебного пособия я не мог понять, как вводить данные в 2 модели одновременно с правильно выполненным сопоставлением внешнего ключа.

Предположительно у меня есть 2 модели (после учебного пособия).), например, ученик и зачисление, и я хочу одновременно вводить данные в обе таблицы, просматривая другие сообщения о переполнении стека, я обнаружил, что есть два способа включения двух представлений в модель, либо путем создания «большого представления»"или используя частичное представление, которое я сделал в этом случае.Таким образом, возвращая 2 объекта в контроллер и сохраняя их в БД, как показано ниже, это работает, за исключением того, что Enrollment не имеет никакой связи с Student через studentID (Foreign Key).Есть ли способ установить или связать его вместе?

В настоящее время я могу сохранить оба отдельных набора данных в БД.Я просто не могу понять, как установить внешний ключ.

Что у меня сейчас есть в 2 БД:

Student      | Enrollment
ID LastName    ID <Some Column> StudentID
1  XXX         1  XXX           NULL (Need this to be 1)

Как мне получить StudentID равным 1?

public async Task<IActionResult> Create([Bind("ID,LastName")] Student student, [Bind("<Some data inside enrollment>")] Enrollment enrollment)
        {
            if (ModelState.IsValid)
            {
                _context.Add(student);
                await _context.SaveChangesAsync();
                _context.Add(enrollment);
                await _context.SaveChangesAsync();
            return View(student);
        }

Большое спасибо!Ваша помощь очень ценится!:)

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Модифицированный ответ Simonare немного, и это сработало для меня.Похоже, var resultStudent не требуется, но общая идея установки идентификатора внутри контроллера есть.

_context.Add(student);
enrollment.studentID = student.ID;
_context.Add(enrollment);
await _context.SaveChangesAsync();
0 голосов
/ 27 декабря 2018

Это поможет,

var resultStudent = _context.Add(student);
enrollment.student_id = resultStudent.id;
_context.Add(enrollment);
await _context.SaveChangesAsync();

или

enrollment.Student = student;
_context.Enrollments.Add(enrollment);
await _context.SaveChangesAsync();
...