什么是在业务逻辑层实现CRUD的最佳方法,使用接口来抽象数据访问层操作?我需要你们的意见。
这是我的草稿。
映射在数据库表中的数据实体。
我创建了一个CRUD接口来抽象对象的操作。
我应该将学生类仅作为学生管理员的属性,还是应该将其作为独立的类?
哪个更合适?接口怎么样?还有其他建议吗?谢谢..C
这是我的草稿。
映射在数据库表中的数据实体。
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()
}
我应该将学生类仅作为学生管理员的属性,还是应该将其作为独立的类?
public class StudentManager : IMaintainable<Student>
{
public Student student { get; private set };
public void Create() {}
public void Update() {}
public void Retrieve() {}
public void Delete() {}
}
哪个更合适?接口怎么样?还有其他建议吗?谢谢..C
key
的类型是string
?Delete()
的id
不应该是uint
或int
吗?我可能错了,请纠正我。 - Jo Smo