我有很多使用原始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