當前位置:首頁 » 編程語言 » sqltolinq

sqltolinq

發布時間: 2025-01-06 22:11:20

⑴ LINQ TO sql 和 ADO.NET ENTITY 有什麼區別呢

LINQ to SQL和Entity Framework都是一種包含LINQ功能的對象關系映射技術。他們之間的本質區別在於EF對資料庫架構和查詢的類型實行了更好的解耦。使用EF,查詢的對象不再是完全對應資料庫架構的C#類,而是更高層的抽象:Entity Data Model。這提供了額外的靈活性,但是在性能和簡單性上面也會有所損失。具體二者之間的區別如下:

復雜度:支持越多的特性就會越復雜。LINQ to SQL所支持的特性比較少,所以也就相對不太復雜;而EntityFramework支持的特性比較多,所以相對比較復雜。
模型:LINQ to SQL在數據表與類之間提供了一對一的映射。如果你有Customers,Orders, 和Lineitems表,你就會有Customer,Order, 和Lineitem類來匹配每一個表。EntityFramework可以使你有一個Customer類,而這個類可以匹配多個表。這就意味著公司名可以 在一個表中,但是地址是在另一個表中,而電話號碼又在另一個表中,等等。
資料庫伺服器:LINQ to SQL只支持Microsoft SQL Server 2000及之後的版本,但即使是SQLServer2000也有很多限制。EntityFramework可以支持IBMDB2, Sybase SqlAnywhere, Oracle, SQLAzure,還有其他很多。
開發時間:LINQ to SQL很容易學,開發起來也很快,但是LINQ to SQL有一些限制,在開發較復雜的應用時可能會產生問題。EntityFramework的能力更強,雖然學習及應用起來比較慢,但是對更多的特性的支持使得在開發較復雜的應用時可以使問題最小化。
繼承:LINQ to SQL支持TPH,而EntityFramework支持TPH和TPT,並且對TPC也部分支持。
文件類型:LINQ to SQL使用包含XML的資料庫標記語言(DBML)文件來映射entity與數據表。EntityFramework 使用四個文件。第一個是Entity Data Model (EDMX),這個是在設計器中使用的。在編譯時EDMX文件產生了其他三個文件。另外三個文件中,第一個是ConceptualSchema Definition Language(CSDL)文件,其包含概念模型的XML定義。第二個是SchemaDefinition Language(SSDL)文件,其包含存儲模型的定義。第三個文件是Mapping Specification Language(MSL)文件,其包含概念模型與存儲模型之間的映射。
復雜類型支持:比如說,一個客戶有電話號碼,但你想要電話號碼定義為國家區號,地區號,城市區號,號碼和分機號。LINQto SQL不支持這種復雜類型,而EntityFramework支持。
查詢能力:LINQ to SQL通過DataContext對資料庫進行查詢。EntityFramework通過ObjectContext通過LINQto Entities進行查詢。Entity Framework還提供了ESQL,它是一種類似SQL的查詢語言,很適合在模型定義中定義查詢。EntityFramework還包含了 ObjectQuery類,用於對象服務在運行時動態創建查詢。最後EntityFramework還包含EntityClientProvider,它 用於對概念模型進行查詢。
性能:LINQ to SQL和Entity Framework第一次執行查詢的時候都比較慢,但之後性能都讓人比較滿意。EntityFramework性能要稍微優於LINQto SQL。
完善:微軟在發布了Entity Framework之後就停止了發布新的LINQ to SQL,但由於LINQto SQL的簡單性,它還是很受歡迎的,所以微軟仍將繼續對LINQto SQL的用戶進行支持與反饋,但是LINQto SQL將不再發布新版本進行完善。
由模型生成資料庫:LINQ to SQL沒有能力由模型生成資料庫。Entity Framework支持兩種類型的開發模式,資料庫優先和編碼優先。資料庫優先開發,資料庫已經存在,所以不需要由模型生成資料庫。編碼優先,你要先創建你的模型,然後由模型生成資料庫。

⑵ LINQ to SQL 和一般的查詢語句怎麼什麼區別

linq是面向對象的sql。也就是說,sql是向關系型資料庫的查詢,而linq實際上是對內存里的數據的查詢。
雖然linq原來是對象查詢,但經過ms的努力,可以通過表達式分析與實體到關系的映射(linq
to
sql),把linq轉換為sql語句或是對xml的查詢(linq
to
xml)。
因此,這種技術就成了對象到資料庫記錄的一個方便的映射、轉化與操作的工具,你再也不必去去根據不同的情況用字元串拼接的辦法生成sql,而是專心於對象模型的處理即可,你對於對象的修改最終都會被轉換為對應的update,
insert,
delete等sql語句,在你submit時全部提交到資料庫中。
綜爾言之,linq
to
sql是一個資料庫到對象結構的一個中間層,
他把對關系數據的管理轉變為對象的操作,屏蔽了麻煩的sql,而且,還可以得到vs強大的智能感知功能的幫助。

熱點內容
微雲如何設置密碼 發布:2025-01-08 06:58:18 瀏覽:532
玩解壓的泥 發布:2025-01-08 06:46:00 瀏覽:553
安卓手機如何卸載軟體干凈 發布:2025-01-08 06:39:21 瀏覽:615
俱樂部源碼 發布:2025-01-08 06:23:23 瀏覽:811
蘋果手機如何設置手機卡密碼 發布:2025-01-08 06:10:27 瀏覽:237
c訪問oracle資料庫 發布:2025-01-08 05:47:51 瀏覽:114
新版安卓什麼時候出 發布:2025-01-08 05:44:46 瀏覽:285
linuxmysql建庫 發布:2025-01-08 05:42:54 瀏覽:133
建行原始密碼多少號 發布:2025-01-08 05:38:01 瀏覽:550
dos下怎麼打開文件夾 發布:2025-01-08 05:36:43 瀏覽:356