Мое приложение построено из 3-х уровней: GUI, BLL и DAL.DAL использует процедуру хранения для работы с базой данных, а BLL содержит код бизнес-логики C #.
Иногда я вынуждаю размещать код бизнес-логики на уровне DAL, потому что мне нужен "ID" (автоматическая идентификация), чтобы продолжать писать.бизнес C # код.Я думаю, что этот архитектор слишком тесен!Итак, есть ли способ освободить его?
Например:
1.Вставить новый объект A (студент).(ID, имя, возраст, пол)
2.Введите новый объект B (оценка) с нужным идентификатором A. (ID, точка, идентификатор студента, subjectID)
3. Номер счетаиз точки> 5 с subjectID = 1 (Math)
- процедура сохранения для вставки «student», также «core», очень проста.
- процедура сохранения для подсчета точек>5 тоже просто.
На уровне BLL:
public int? methodA(Object A, Object B){
return DAL.methodA(A,B)
}
На уровне DAL:
public int? methodA(object A, Object B){
int? result = null;
using(sqlconnection conn){
using(sqltraction trans){
IDstudent = sp_InsertStudent(A)
ObjectB.Idstudent = IDstudent
IDscore = sp_InsertScore(B)
result = sp_CountPointOver5(IDst)
}
}
return result;
}
Выше приведен небольшой пример.На самом деле, я должен написать много бизнес-логики на уровне DAL внутри sqltransaction после получения studentID.Например: после получения studentID я вызову 4 метода для завершения бизнес-логики.Эти 4 метода все пишут из кода C #.