MSDN上最近發表了一篇Elisa Flasko著的文章,比較了LINQ to SQL與LINQ to Entities適用的場景:
Introducing LINQ to Relational Data
http://msdn2.microsoft.com/en-us/library/cc161164.aspx
作者指出,LINQ to SQL主要的應用場景是針對微軟SQL Server數據庫的快速開發,這些應用的對象模型與數據庫中數據定義的結構間非常類似,幾乎有一一對應的映射關係,這樣你可以使用LINQ to SQL把一些數據表直接映射到.NET類,數據字段映射到的相應的.NET類的屬性上。作者總結如下:
LINQ to SQL適用之場景
- 想使用ORM方案,而且數據庫數據定義與對象模型是1:1對應關係
- 想使用ORM方案,而且對象繼承結構儲存在單一數據表中(單表繼承)
- 想使用原始CLR類,而不是使用生成的類或需要從某個基類繼承而來,或者需要實現某個接口
- 想使用LINQ來編寫查詢
- 想使用ORM,但需要性能非常好,可以通過存儲過程和編譯的查詢來優化性能
注意,跟外面的一些傳說相反,LINQ to SQL是支持對象繼承的,雖然只支持常見的三種繼承模式中的一種,LINQ to SQL也支持使用外部映射文件。
LINQ to Entities主要的應用場景針對的是需要非常靈活和更復雜的映射的場景,特別是在企業應用方面,而且需要訪問其他的數據庫系統。在這些場景中,數據表的結構與對象模型也許差別很大,而且應用開發人員往往並不擁有生成或修改數據庫數據定義的權利。
LINQ to Entities適用之場景
- 想要開發針對微軟SQL Server或其他數據庫系統的應用
- 想要定義領域模型,並以之爲持久層的基礎
- 想要使用ORM方案,對象也許與數據庫數據定義有1:1對應關係,也許結構迥異
- 想要使用支持單表繼承和其他儲存方案(每類一表,每具體類一表)的ORM方案
- 想使用LINQ來編寫查詢,並且查詢可以在不同數據庫系統下工作
- 想使用ORM,但需要性能非常好,可以通過存儲過程和編譯的查詢來優化性能
http://blog.joycode.com/saucer/archives/2008/02/09/114500.joy