Вам необходимо ввести еще один слой под названием Модель. Этот слой будет определять класс Student только как объект данных. (Нет методов Сохранить или Получить в этом слое).
Слой модели может быть в своем собственном проекте (и, следовательно, в своей собственной dll). Теперь назовите dll во всех слоях (Presentation, Business и DA). Используйте тип Student для хранения только элементов данных.
На бизнес-уровне создайте ссылку на уровень DA и создайте класс Student с методом SaveStudent. На уровне DA ссылайтесь только на слой Model и реализуйте метод save student. (Обратите внимание, что это показывает только уровень и классы, которые должны иметь эти уровни, в идеале классы должны реализовывать интерфейсы, предназначенные для этой цели, но это само по себе не является частью вашего вопроса)
namespace Model{
class Student
{
public string Name { get; set; }
public String Address { get; set; }
// more student properties here ..
// No methods like SaveStudent in this class , thats up into the business layer
public bool IsValid(){ // validate the student here }
}
}
namespace Business{
class Student
{
// call this method from your Presentation layer
public void SaveStudent(Model.Student student)
{
if (student.IsValid())
{
DataAccess.StudentDAO student = new DataAccess.StudentDAO();
student.SaveStudent(student);
}
else
{
throw new ApplicationException("Invalid student");
}
}
}
}
namespace DataAccess{
class StudentDAO
{
public void SaveStudent(Model.Student student)
{
// impl here to save a student informatin to a
// persistent storage
}
}
}