【发布时间】:2013-07-13 00:47:04
【问题描述】:
我们有一个带有以下查询的现有 SQL Server 存储过程。在下面的类设计中,我们需要根据查询结果创建一个Student 对象的集合。
使用LINQ 从SqlDataReader 创建对象的最佳方法是什么?
注意:我只使用SqlDataReader;没有ORM
查询
SELECT
S.StudentID, S.StudentName, E.ExamID, E.ExamName, SE.Mark
FROM
StudentExam SE
INNER JOIN
Student S ON S.StudentID = SE.StudentID
INNER JOIN
Exam E ON E.ExamID = SE.ExamID
类
public class ExamMark
{
public int ExamID { get; set; }
public string ExamName { get; set; }
public int Mark { get; set; }
}
public class Student
{
public int StudentID { get; set; }
public string StudentName { get; set; }
public List<ExamMark> examResults { get; set; }
}
SqlDataReader
SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
}
}
参考文献
【问题讨论】:
-
最好的方法?最易读?最好的表现?
-
@Xeano。可读性最高,性能可接受
-
实例化新对象并将值从数据库分配给属性有什么问题?
-
@Lijo 迭代返回的结果集如何增加数据库调用?
-
@Lijo 只是为了让您知道 linq 在内部使用循环。见stackoverflow.com/questions/3156059/…
标签: c# sql-server linq stored-procedures