我有一个关于将从数据访问层中的数据库获得的值分配给 WCF 层的数据合同的正确方法的问题。
考虑一个简单的场景,从数据库中获取所有学生的列表,然后将其分配给学生数据合约。
我的学生数据合同如下所示:
[DataContract]
public class StudentDC
{
[DataMember]
public int StudentID { get; set; }
[DataMember]
public string StudentName { get; set; }
}
在我的数据访问类中,我会有一个像 List GetAllStudents() 这样的方法
我的问题是关于我的 GetAllStudents() 方法的实现。它看起来像下面这样是否可以:
公共列表 GetAllStudents() {
List<StudentDC> studentDCs = new List<StudentDC>(); var students = db.Students_TB.Select(s => s).ToList(); foreach(Student_TB student in students) { StudentDC studentDC = new StudentDC(); studentDC.StudentID = student.StudentID; studentDC.StudentName = student.StudentName; studentDCs.Add(studentDC); } return studentDCs;
}
上述为数据合约赋值的方式是否正确,或者我应该让学生业务对象类接受数据访问层中的数据,然后在服务合约实现中将值传递给数据合约,如下所示:
我会有如下的学生业务对象类:
公共课学生BO {
int studentID; string studentName; public int StudentID { get { return studentID; } set { studentID = value; } } public <return type> BusinessLogicMethod1() { // Implementation }
}
在数据访问层中,我将从数据库中获取的值分配给学生业务对象的集合,如下所示:
public List<StudentBO> GetAllStudents()
{
List<StudentBO> studentBOs = new List<StudentBO>();
var students = db.Students_TB.Select(s => s).ToList();
foreach(Student_TB student in students)
{
StudentBO studentBO = new StudentBO();
studentBO.StudentID = student.StudentID;
studentBO.StudentName = student.StudentName;
studentBOs.Add(studentBO);
}
return studentBOs;
}
然后,学生业务对象中的值将被分配给服务合同实现中的学生数据合同,从那里通过线路发送出去。
以上两种方式哪一种是正确的方式?