Ваш вопрос неоднозначен. Это зависит от того, какую запись и какую операцию вы ссылаетесь.
Если вы обратитесь к один ко многим записи, как:
header --> many details
BL
Затем проверка дублирования делается в BL. То есть, например, подтвердите, если деталь заголовка не должна содержать два или более одинаковых кода элемента и т. Д. И если процесс принимает массив заголовков, дублируемая проверка заголовка также выполняется в BL.
Другие правила валидации, такие как минимальная длина, формат строки, нулевые значения и т. Д., Также выполняются в BL. Он может быть автоматически повторно проверен в DB, хотя, если вы используете некоторые ограничения и тип данных/isnull.
DAL
Однако, если вы хотите проверить, если идентификатор заголовка уже существует в DB, сделайте это в DAL. Это потому, что BL не знают, что это такое в репозитории. Это DAL.
Есть некоторые случаи, когда вам не нужно сначала выполнять проверку, например, если таблица заголовков уже имеет уникальный индекс, она будет генерировать исключение, и вам просто нужно ее поймать.Однако для конкретных DB проверка проверки вроде: item не существует, количество предметов недостаточно, определенного пользователя не существует, вы должны сделать это в DAL или использовать хранимую процедуру для него.
Но любая проверка в DAL, должен быть вызван из BL и избежать прямого вызова из UI.