MVC - Добавление данных в таблицы компоновщиков

У меня есть регистрационная форма, которая позволяет школе зарегистрироваться. Помимо очевидных логинов и общих деталей, школа может выбрать из списка объектов и аккредитаций, которые у них есть.

Мои данные отображаются красиво и правильно привязаны.

Problem Entering the data into the linker tables does not work it throws an error in both the different ways that I have tried:

<Сильный> Method1:

MembershipUser membershipUser = null;

if (schoolRegisterModel != null)
{
    if (null != DB)
    {
        school SchoolUser = new school();

        SchoolUser.username = schoolRegisterModel.UserName;
        SchoolUser.email = schoolRegisterModel.Email;

        string sPassowrdSalt = Security.Instance().CreateSalt();

        SchoolUser.password = Security.Instance().CreatePasswordHash(schoolRegisterModel.Password, sPassowrdSalt);

        SchoolUser.password_salt = sPassowrdSalt;

        ..More data etc..

        foreach (var item in schoolRegisterModel.Facilities)
        {
            if ([email protected])
            {
                school_facility sf = new school_facility();
                sf.facility_id = item.facility_id;
                SchoolUser.school_facility.Add(sf);
            }
        }

        foreach (var item in schoolRegisterModel.Accreditations)
        {
            if ([email protected])
            {
                school_accreditation sa = new school_accreditation();
                sa.accreditation_id = item.accreditation_id;
                SchoolUser.school_accreditation.Add(sa);
            }
        }

        DB.schools.Add(SchoolUser);
        DB.SaveChanges();

Error: {"The INSERT statement conflicted with the FOREIGN KEY constraint \"FK_school_facility_facility\". The conflict occurred in database \"MYDB\", table \"dbo.facility\", column 'facility_id'.\r\nThe statement has been terminated."}

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

<Сильный> Method2:

Тот же код снова, кроме попытки напрямую обновить аккредитацию первичных таблиц (школы) и набор объектов, я вручную вручную обновляю таблицы компоновщиков, используя последний первичный ключ, сгенерированный предыдущим запросом, код для этого выглядит следующим образом:

MembershipUser membershipUser = null;

if (schoolRegisterModel != null)
{
    if (null != DB)
    {
        school SchoolUser = new school();

        SchoolUser.username = schoolRegisterModel.UserName;
        SchoolUser.email = schoolRegisterModel.Email;

        string sPassowrdSalt = Security.Instance().CreateSalt();

        SchoolUser.password = Security.Instance().CreatePasswordHash(schoolRegisterModel.Password, sPassowrdSalt);

        SchoolUser.password_salt = sPassowrdSalt;

        ..More data etc..

       //Linker data for facilities and accreditations.
       //Facilities
        foreach (var item in schoolRegisterModel.Facilities)
        {
            if ([email protected])
            {
                school_facility sf = new school_facility();
                sf.facility_id = item.facility_id;
                sf.school_id = SchoolUser.school_id;
                DB.school_facility.Add(sf);
            }
        }

       //Accreditations
        foreach (var item in schoolRegisterModel.Accreditations)
        {
            if ([email protected])
            {
                school_accreditation sa = new school_accreditation();
                sa.accreditation_id = item.accreditation_id;
                sa.school_id = SchoolUser.school_id;
                DB.school_accreditation.Add(sa);
            }
        }

        m_DB.SaveChanges(); 

Error: {"The INSERT statement conflicted with the FOREIGN KEY constraint \"FK_school_facility_facility\". The conflict occurred in database \"MYDB\", table \"dbo.facility\", column 'facility_id'.\r\nThe statement has been terminated."}

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

Заранее спасибо.

0
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)