0

Link爲什麼使用EF實現的存儲庫暴露IQueryable而不是ObjectQuery?

我的倉庫總是返回的IQueryable。原因是 IQueryable不依賴於EF,而ObjectQuery是。所以如果我想 我的其他圖層是堅持無知的,我不想引入 依賴於ObjectQuery。

一)我認爲之所以庫(使用EF實現)應該返回IQueryable代替ObjectQuery是因爲其他奧姆斯也使用其返回IQueryable查詢,並且通過具有存儲庫返回IQueryable我們可以EF和其他奧姆斯之間輕鬆切換,而不必更改存儲庫的公共接口?

b)除了EF和NHibernate,還有沒有其他的ORM也有查詢返回IQueryable

謝謝

+0

a)是b)列表 .AsQueryable()也可用於測試目的。還有OData(但它只支持IQueryable的一小部分)。 – Aron

+0

感謝您的回覆 – bckpwrld

+1

叫醒電話:http://blog.ploeh.dk/2012/03/26/IQueryableTisTightCoupling/ –

回答

0

你應該返回IQueryable的,因爲這是表達式樹用得上。如果它不是IQueryable,它可能是其他某種理解表達式的東西,或者是其某種可怕的定製語言,它會給您帶來極大劣勢的編程體驗,以至於您不能使用它。

如果在這裏瞭解到表示示例,那麼它也可能只是IQueryable的,因爲這是IQueryable的全 - 到是一般的抽象,每個人都可以在自己的接口重用。

相關問題