Как убедиться, что составной ключ еще не существует в базе данных? - PullRequest
0 голосов
/ 11 октября 2011

Здравствуйте, я пишу код в MVC 3, используя C #.

Я заполняю таблицу связей между преподавателем и учеником, которая называется Tutor_Student.Первичный ключ этой таблицы состоит из tutorId и studentId из родительских таблиц и Subject.

, что у меня в моей модели, выглядит следующим образом:

        [Key, Column(Order = 0)]
        public string tutorID { get; set; }
        [Key, Column(Order = 1)]
        public string studentID { get; set; }
        [Key, Column(Order = 2)]
        public string Subject { get; set; }

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

Есть ли способ сделать это?Заранее спасибо, я действительно ценю это ...

1 Ответ

3 голосов
/ 11 октября 2011

Один из способов справиться с этим - иметь unique constraint в столбцах и позволить SQL Server обрабатывать проверку.Тогда вы можете просто catch SqlException выбросить при сохранении и обработать его изящно.Класс SqlException содержит много полезной информации, которую вы можете найти, чтобы выяснить, что пошло не так, например, коллекция Errors.

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

bool Exists(string tutorID, string studentID, string subject)

Точная реализация этого метода зависит от сервера базы данных и т. Д., Но при этомВ шаблоне хранилища вы получаете необходимый уровень разделения в своем приложении для структурированного и интуитивно понятного решения этих типов проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...