Die Implementierung eines CRUD, die über eine Schnittstelle

Was ist der beste Ansatz zur Umsetzung einer CRUD auf der BL unter Verwendung der Schnittstelle, die verwendet werden, um abstrakte DAL Operationen? Ich brauche Ihre Meinung, Jungs..

Hier ist mein Entwurf..

Daten, die Personen zugeordnet sind, die in der Datenbank-Tabelle

 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; }
 }

Erstellte ich eine CRUD-Schnittstelle für die Abstraktion der Objekt-Operationen

public interface IMaintanable<T>
{
   void Create(T obj);
   T Retrieve(string key);
   void Update(string key);
   void Delete(string key);
 }

Dann eine Komponente, verwaltet das Unternehmen und seine Operationen durch die Implementierung der Schnittstelle

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
    }
}

Beispiel für die Nutzung

    public void Button_SaveStudent(Event args, object sender)
    {
        Student student = new Student()
        {
           StudentId = "1", StudentName = "Cnillincy"
        }

        new StudentManager().Create(student);   
     }

wie Sie sehen können, es ist ziemlich Anomalien auf der update-Methode

    public void Update()
    {
        //should update the record in the DB
    }

was sollte diese Methode zum aktualisieren der Objekte Immobilie? sollte ich Erben die 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()
    }

Oder sollte ich nur die Student-Klasse als ein Attribut des Studenten, manager?

     public class StudentManager : IMaintainable<Student>
    {
        public Student student { get; private set };

        public void Create() {}
        public void Update() {}
        public void Retrieve() {}
        public void Delete() {}
    }

Welche besser geeignet? Was ist die Schnittstelle? Andere Anregungen, Jungs? danke..C

InformationsquelleAutor CSharpNoob | 2010-09-21

Schreibe einen Kommentar