新聞中心
在向大家詳細介紹Linq對象引用之前,首先讓大家了解下對象標識,然后全面介紹Linq對象引用。

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網綜合服務,包含不限于成都做網站、成都網站制作、黃平網絡推廣、成都小程序開發(fā)、黃平網絡營銷、黃平企業(yè)策劃、黃平品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學生創(chuàng)業(yè)者提供黃平建站搭建服務,24小時服務熱線:18982081108,官方網址:www.cdcxhl.com
對象標識
◆運行庫中的對象具有唯一標識。引用同一對象的兩個變量實際上是引用此對象的同一實例。你更改一個變量后,可以通過另一個變量看到這些更改。
◆關系數(shù)據(jù)庫表中的行不具有唯一標識。由于每一行都具有唯一的主鍵,因此任何兩行都不會共用同一鍵值。
實際上,通常我們是將數(shù)據(jù)從數(shù)據(jù)庫中提取出來放入另一層中,應用程序在該層對數(shù)據(jù)進行處理。這就是 LINQ to SQL 支持的模型。將數(shù)據(jù)作為行從數(shù)據(jù)庫中提取出來時,你不期望表示相同數(shù)據(jù)的兩行實際上對應于相同的行實例。如果您查詢特定客戶兩次,您將獲得兩行數(shù)據(jù)。每一行包含相同的信息。
對于對象。你期望在你反復向 DataContext 索取相同的信息時,它實際上會為你提供同一對象實例。你將它們設計為層次結構或關系圖。你希望像檢索實物一樣檢索它們,而不希望僅僅因為你多次索要同一內容而收到大量的復制實例。
在 LINQ to SQL 中,DataContext 管理對象標識。只要你從數(shù)據(jù)庫中檢索新行,該行就會由其主鍵記錄到標識表中,并且會創(chuàng)建一個新的對象。只要您檢索該行,就會將原始對象實例傳遞回應用程序。通過這種方式,DataContext 將數(shù)據(jù)庫看到的標識(即主鍵)的概念轉換成相應語言看到的標識(即實例)的概念。應用程序只看到處于第一次檢索時的狀態(tài)的對象。新數(shù)據(jù)如果不同,則會被丟棄。
LINQ to SQL 使用此方法來管理本地對象的完整性,以支持開放式更新。由于在最初創(chuàng)建對象后唯一發(fā)生的更改是由應用程序做出的,因此應用程序的意向是很明確的。如果在中間階段外部某一方做了更改,則在調用 SubmitChanges() 時會識別出這些更改。
以上來自MSDN,的確,看了有點“正規(guī)”,下面我用兩個例子說明一下。
Linq對象引用
在第一個示例中,如果我們執(zhí)行同一查詢兩次,則每次都會收到對內存中同一Linq對象引用。很明顯,cust1和cust2是同一個Linq對象引用。
- Customer cust1 = db.Customers.First(c => c.CustomerID == "BONAP");
- Customer cust2 = db.Customers.First(c => c.CustomerID == "BONAP");
下面的示例中,如果您執(zhí)行返回數(shù)據(jù)庫中同一行的不同查詢,則您每次都會收到對內存中同一Linq對象引用。cust1和cust2是同一個Linq對象引用,但是數(shù)據(jù)庫查詢了兩次。
- Customer cust1 = db.Customers.First(c => c.CustomerID == "BONAP");
- Customer cust2 = (
- from o in db.Orders
- where o.Customer.CustomerID == "BONAP"
- select o )
- .First()
- .Customer;
標題名稱:Linq對象引用簡單介紹
分享路徑:http://www.5511xx.com/article/cdjdcsp.html


咨詢
建站咨詢
