Member 12771245 Ответов: 1

Оператор INSERT конфликтовал с ограничением внешнего ключа "FK_assigntask_admin". Конфликт произошел в базе данных "fypmanagemnt", таблице" dbo.admin", столбце "admin_ID".


Я получаю вышеупомянутую ошибку. Можешь мне помочь, плз.
Я вставляю данные в таблицу назначенных задач.Ниже приведены столбцы таблицы назначенных задач. assignt_ID, assignt_title,assignt_description,assignt_to, assignt_time,assignt_deadline, assign_projectname,assign_milestone,assign_priority,FK_sup_ID,FK_stu_ID,FK_admin_ID,FK_grp_ID

FK_admin_ID имеет отношение к таблице admin. Но когда я вставляю данные в назначенную таблицу задач, я получаю ошибку внешнего ключа идентификатора администратора.
Пожалуйста, помогите мне


public int sup_groupuploadtask(string projectname, string tasktitle, string taskdescription, string milestone, string groupname, string taskstartdatetime, string taskduedatetime, string priority, string supID, string grpID)
        {

            int idchecking = (from s in dc.AssignTasks
                              select s).Count();
            if (idchecking > 0)
            {
                return 1;
            }
            else
            {
                try
                {
                    int idd;
                    int iddchecking = (from s in dc.AssignTasks

                                       select s).Count();

                    if (iddchecking > 0)
                        idd = (from s in dc.AssignTasks
                               select s.assignt_ID).Max();

                    else
                        idd = 0;
                    bool check = false;
                    AssignTask at = new AssignTask();
                    at.assign_projectname = projectname;
                    at.assignt_title = tasktitle;
                    at.assignt_description = taskdescription;
                    at.assign_milestone = milestone;
                    at.assignt_to = groupname;

                    DateTime taskassigndate = Convert.ToDateTime(taskstartdatetime);
                    at.assignt_time = taskassigndate;

                    DateTime taskduedate = Convert.ToDateTime(taskduedatetime);
                    at.assignt_deadline = taskduedate;
                    at.assign_priority = priority;
                    dc.AssignTasks.InsertOnSubmit(at);
                    dc.SubmitChanges();
                    check = true;
                    if (check == true)
                    {
                        return 3;
                    }
                    else
                        return 4;

                }
                catch
                {
                    return 2;
                }

            }




Пожалуйста, помогите мне, я буду очень благодарен за ваше время.

Что я уже пробовал:

Я создал связь между внешним ключом администратора, помещенным в назначенный идентификатор задачи, и первичным ключом идентификатора администратора , но все равно получаю ошибку.

1 Ответов

Рейтинг:
1

OriginalGriff

Код, который вы показываете, не делает очевидной вставки: есть пара вариантов Linq, но код изменения базы данных не виден - поэтому мы не можем точно сказать, что именно вам нужно сделать, чтобы исправить это!
Вероятно, вам нужно найти код, где вы на самом деле выполняете операцию вставки, и исправить его там. По всей вероятности, это ваш AssignTasks.InsertOnSubmit метод, на который вам нужно посмотреть.
Но из ошибки довольно очевидно, что вы сделали, даже если мы не можем видеть код.
Вы пытаетесь вставить строку в таблицу, которая имеет отношение внешнего ключа с другой таблицей, и значение, которое вы пытаетесь установить для этого столбца, не существует в другой таблице - поэтому, если SQL разрешил Вам вставить строку, то данные в БД будут противоречивыми, он этого не допустит. Нормальной причиной этого является вставка строк в таблицы в неправильном порядке - сначала вы должны вставить их в первичную таблицу, а затем в таблицу, имеющую отношение внешнего ключа, чтобы данные всегда были согласованными.


Member 12771245

Но я не пытаюсь вставить какие-либо данные в FK_admin_ID, и в базе данных этот столбец может иметь нулевое значение.

OriginalGriff

Ошибка говорит о том, что вы вставляете значение admin_ID, которое не совпадает с другой таблицей...
Поэтому используйте отладчик, чтобы точно выяснить, где происходит ошибка и что именно вы вставляете в какие таблицы. Мы не можем сделать это для вас!