Implémentation d'un CRUD en utilisant une interface

Quelle est la meilleure approche pour mettre en place un CRUD sur le BL en utilisant l'interface qui sera utilisée pour résumé DAL opérations? J'ai besoin de vos avis les gars..

Voici mon projet..

Entités de données qui sont mappés dans la table de base de données

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

J'ai créé une Interface CRUD à l'abstrait de l'objet des opérations de

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

Et puis un composant qui gère l'Entité et de ses opérations par la mise en œuvre de l'interface

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

exemple d'utilisation

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

        new StudentManager().Create(student);   
     }

comme vous pouvez le voir, il y a une anomalie au niveau de la méthode de mise à jour

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

ce qui devrait cette méthode pour mettre à jour les objets de la propriété? dois-je hériter de la Étudiant?

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

Ou devrais-je simplement contenir les Élèves de la classe comme un attribut de l'Étudiant manager?

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

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

Qui plus appropriée? Ce sujet de l'interface? Toutes les autres suggestions les gars? merci..C

source d'informationauteur CSharpNoob