Я возился с этим в течение 5 часов и сдался.
Раньше я делал в основном такие же отношения и работал, и теперь, когда я сохраняю в своем проекте MVVM, я получаю эту ошибку:
SqlException: Нарушение ограничения PRIMARY KEY 'PK_dbo.LecturerMeeting'. Невозможно вставить дубликат ключа в объект «dbo.LecturerMeeting». Значение дубликата ключа (2, 2).
А также:
Произошла ошибка при сохранении сущностей, которые не предоставляют свойства внешнего ключа для своих отношений. Свойство EntityEntries вернет значение NULL, поскольку один объект не может быть определен как источник исключения. Обработка исключений при сохранении может быть упрощена путем предоставления свойств внешнего ключа в типах объектов. Подробности смотрите в InnerException.
У меня есть 2 класса моделей, Meeting
и Lecturer
. В Lecturer
классе я определяю в конструкторе:
public Lecturer()
{
Meetings = new Collection<Meeting>();
}
А также
public ICollection<Meeting> Meetings { get; set; }
То же самое в Meeting
классе
public Meeting()
{
Students = new Collection<Student>();
Lecturers= new Collection<Lecturer>();
}
И:
public ICollection<Lecturer> Lecturers { get; set; }
Но когда я создал отношения «многие ко многим» между встречами и учеником, EF создал таблицу MeetingStudent
.
Теперь он создал LecturerMeeting
, не знаю, изменит ли это что-нибудь
SQL код для LecturerMeeting
отношений:
CREATE TABLE [dbo].[LecturerMeeting]
(
[Lecturer_Id] INT NOT NULL,
[Meeting_Id] INT NOT NULL,
CONSTRAINT [PK_dbo.LecturerMeeting] PRIMARY KEY CLUSTERED ([Lecturer_Id] ASC, [Meeting_Id] ASC),
CONSTRAINT [FK_dbo.LecturerMeeting_dbo.Lecturer_Lecturer_Id] FOREIGN KEY ([Lecturer_Id]) REFERENCES [dbo].[Lecturer] ([Id]) ON DELETE CASCADE,
CONSTRAINT [FK_dbo.LecturerMeeting_dbo.Meeting_Meeting_Id] FOREIGN KEY ([Meeting_Id]) REFERENCES [dbo].[Meeting] ([Id]) ON DELETE CASCADE
);
GO
CREATE NONCLUSTERED INDEX [IX_Lecturer_Id]
ON [dbo].[LecturerMeeting]([Lecturer_Id] ASC);
GO
CREATE NONCLUSTERED INDEX [IX_Meeting_Id]
ON [dbo].[LecturerMeeting]([Meeting_Id] ASC);
Пожалуйста, помогите.