Каков наилучший подход к реализации CRUD на BL с использованием интерфейса, который будет использоваться для абстрактных операций DAL? Мне нужно ваше мнение, ребята ..
Вот мой черновик ..
Объекты данных, отображаемые в таблице базы данных
public class Student
{
public string StudentId { get; set; }
public string StudentName { get; set; }
public Course StudentCourse { get; set; }
}
public class Course
{
public string CourseCode { get; set; }
public string CourseDesc { get; set; }
}
Я создал интерфейс CRUD, чтобы абстрагировать операции объекта
public interface IMaintanable<T>
{
void Create(T obj);
T Retrieve(string key);
void Update(string key);
void Delete(string key);
}
А затем компонент, который управляет Сущность и ее операции путем реализации интерфейса
public class StudentManager : IMaintainable<Student>
{
public void Create(Student obj)
{
// inserts record in the DB via DAL
}
public Student Retrieve(string userId)
{
// retrieveds record from the DB via DAL
}
public void Update()
{
// should update the record in the DB
}
public void Delete(string userId)
{
// deletes record from the DB
}
}
, пример использования
public void Button_SaveStudent(Event args, object sender)
{
Student student = new Student()
{
StudentId = "1", StudentName = "Cnillincy"
}
new StudentManager().Create(student);
}
, как вы можете видеть, в методе обновления довольно много отклонений
public void Update()
{
// should update the record in the DB
}
. Что должен иметь этот метод для обновления свойства объектов? должен ли я наследовать Student ?
public class StudentManager : Student , IMaintainable<Student>
{
public void Update()
{
//update record via DAL
}
}
public void Button_SaveStudent(Event args, object sender)
{
Student student = new StudentManager();
student.StudentId = "1";
student.StudentName = "Cnillincy"
student.Update()
}
Или я должен просто содержать класс Student в качестве атрибута диспетчера студентов?
public class StudentManager : IMaintainable<Student>
{
public Student student { get; private set };
public void Create() {}
public void Update() {}
public void Retrieve() {}
public void Delete() {}
}
Что более подходящее? А как насчет интерфейса? Есть еще предложения, ребята? спасибо .. C