Вставить исключение при использовании linqtosql - PullRequest
1 голос
/ 13 октября 2009

Когда я хочу вставить данные в мою таблицу, появляется это исключение

Оператор INSERT конфликтует с ограничением FOREIGN KEY "FK_Message_Subject". Конфликт произошел в базе данных "C: \ DOCUMENTS AND SETTINGS \ TEHRANI \ DESKTOP \ MESSAGEADMINPAGE \ APP_DATA \ ASPNETDB.MDF", таблице "dbo.Subject", столбце "ID_Subject". Заявление было прекращено.

Этот код для вставки:

string[] a = UserIDtxt.Text.Split(',');

        foreach (String b in a)
        {
            Message M = new Message();

            Guid i = (from q in MDB.aspnet_Memberships
                      where q.aspnet_User.UserName.ToString() == b.ToString()
                      select q).Single().UserId;

            M.ID_Receiev = i;
            M.ID_Message = Guid.NewGuid();
            M.ID_Sender = (Guid)Admin.ProviderUserKey;
            M.ID_Message_Parent = Guid.Empty;

            if (SubjectDDL.SelectedItem.ToString() != "Other")
            {
                M.ID_Subject = new Guid(SubjectDDL.SelectedValue);
            }
            else
            {
                M.Other_Subject = Othertxt.Text;
            }

            M.Body = TEXTtxt.Text;
            M.Date = DateTime.Now;
            M.IsFinished = false;
            M.IsRead = false;

            MDB.Messages.InsertOnSubmit(M);

        }

    MDB.SubmitChanges();

Ответы [ 2 ]

0 голосов
/ 13 октября 2009

Насколько я могу судить, основываясь на FOREIGN KEY constraint "FK_Message_Subject", у вас также есть таблица на Subjects. Если это предположение верно, когда вы присваиваете M.ID_Subject новый Guid, он может не существовать как FOREIGN KEY в таблице Subjects. Вы должны найти любой существующий Subject с помощью SubjectDDL.SelectedValue и получить существующий идентификатор для КЛЮЧЕВОГО КЛЮЧА. Если он не существует, создайте новый Subject и присвойте его непосредственно Message M.

То же самое относится и к SubjectDDL.SelectedItem.ToString() == "Other". В этом случае FOREIGN KEY имеет значение null, и это также может быть причиной этой ошибки.

0 голосов
/ 13 октября 2009

Вы должны установить значение всего поля

           if (SubjectDDL.SelectedItem.ToString() != "Other")
            {
                M.ID_Subject = new Guid(SubjectDDL.SelectedValue);
                M.Other_Subject = null;
            }
           else
            {
                M.ID_Subject = new Guid(SubjectDDL.SelectedValue);
                M.Other_Subject = Othertxt.Text;
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...