我聽說Linq查詢寫入一次也可以在SQL和MS Access數據庫上運行。是對還是錯?Linq與多個RDBMS類型
例如,我想寫一次查詢,不管數據庫類型如目前我使用MS Access數據庫,然後如果我想移動到SQL Server然後我不想改變我的查詢。這可能嗎??
我聽說Linq查詢寫入一次也可以在SQL和MS Access數據庫上運行。是對還是錯?Linq與多個RDBMS類型
例如,我想寫一次查詢,不管數據庫類型如目前我使用MS Access數據庫,然後如果我想移動到SQL Server然後我不想改變我的查詢。這可能嗎??
它部分取決於查詢。對於簡單的查詢(select,where,orderby)你應該沒問題,但是有很多特定於實現的細節。
例如:
First
你還沒有明確地下令:LINQ到SQL是好的與,LINQ到實體將無法Expression.Invoke
到建立一個粗糙的自定義表達式:再一次,LINQ到SQL是好的,LINQ到實體將會失敗.Where(predicate).FirstOrDefault()
VS .FirstOrDefault(predicate)
某些情況下 - 這是語義上相同,但IIRC只有一個作品(道夫)我的觀點是;它可能工作,但你確實需要針對具體實施進行測試。
LINQ-to-SQL只能用於SQL服務器。對象的Linq將在大多數任何集合上工作,但是你失去了延期執行。
如果您使用實體框架,您可以爲不同的數據源找到/購買多個提供商。
只要您對實體上下文有足夠的抽象,就可以使用任何LINQ構造來構建查詢。但請記住,並非所有提供商都支持相同的運營商和功能。在DBMS更改期間,您仍然需要測試完整的應用程序。
基本上,您可以使用Linq到對象並使用任何數據集。
如果你想保存你的邏輯和具體 - 我建議你使用Devart LinqConnect。
另外,您還可以閱讀given article中有關同時使用Oracle和MS SQL的更多信息。 LinqConnect的方法將是相同的。
我在SQL Server和SQL CE上使用相同的程序集時沒有問題。也就是說,我不得不稍微調整生成的代碼,並限制在SQL CE中可用的內容(例如沒有視圖,沒有存儲過程,沒有函數等)。 – leppie 2011-02-01 06:33:38