ASP.NET странно, когда речь идет о разделении данных и бизнес-логики. MVC делает это проще, но вы не указываете, используете ли вы его. Мы работаем над этим вопросом следующим образом:
Мы создаем статический сериализация класс, который несет исключительную ответственность за взаимодействие с базой данных. Он один отвечает за вызов хранимых процедур. Он возвращает экземпляры POCO (простые старые объекты C #), которые сериализатор знает, как создавать и заполнять данными из базы данных.
Теперь POCO предоставляют методы фасада, которые перенаправляют вызовы в сериализатор. Например:
public static Employee Load(int id)
вызовет метод Load для класса EmployeeSerializer. Это не сделало бы ничего другого. Но он позволяет страницам работать с объектами Employee естественным образом.
Может быть, не прав, но это лучше, чем у нас было раньше. Точно так же вы вызываете Employee.Save (), и вызов перенаправляется на EmployeeSerializer.
Это позволяет хранить все вызовы хранимых процедур в одном классе. Бизнес-логика инкапсулирована в классе Employee. И страницы могут просто работать с сотрудниками.
Обратите внимание, что бизнес-объекты могут находиться в отдельной DLL от объектов базы данных, но это может привести к проблемам с циклическими зависимостями. Храните их в одной и той же DLL и размещайте в разных пространствах имен. Но отделите их от страниц ASP.NET, поместив их в отдельную DLL вместе.