我有很多使用原始ADO.NET(DbConnection,DbDataReader等)的现有代码。我想转换为使用LINQ to SQL来获取新代码,但现在将现有代码和新代码放在一组统一的Repository类之后。是否有通过DbDataReader实现的IQueryable?
我遇到的一个问题是:我希望存储库类将结果集公开为IQueryable <>,这是我通过LINQ to SQL免费获得的。如何将我现有的DbDataReader结果集封装在IQueryable中?我必须从头开始通过DbDataReader实现IQueryable吗?
注意我知道LINQ to DataSet,但由于内存扩展问题,我不使用DataSet,因为我处理的结果集可能相当大(数量级为1000)。这意味着IQueryable over DbDataReader实现也需要高效(即不要将结果缓存在内存中)。
回复您的评论 - 一个选项(即仍然保留懒惰等等)是`选择' - 即reader.AsEnumerable()。选择(记录=> BuildPerson(记录))等 - 它给你一个IEnumerable –
2009-06-25 07:13:06
尼斯...和我的助手类是通用的,所以它看起来像这样: reader.AsEnumerable()。Select(record => RecordToObject(record)) –
DSO
2009-06-25 07:31:54