這篇文章主要介紹了Linq DataContext有什么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)是專業(yè)的雙河網(wǎng)站建設公司,雙河接單;提供網(wǎng)站設計制作、成都做網(wǎng)站,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行雙河網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
主鍵緩存
Linq to sql對查詢過的對象進行緩存,之后的如果只根據(jù)主鍵查詢一條記錄的話會直接從緩存中讀取。比如下面的代碼:
Customer c1 = ctx.Customers.Single(customer => customer.CustomerID == "ANATR"); c1.ContactName = "zhuye"; Customer c2 = ctx.Customers.Single(customer => customer.CustomerID == "ANATR"); Response.Write(c2.ContactName);
執(zhí)行后只會產(chǎn)生一條SQL:
SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].
[ContactTitle], [t0].[Address], [t0].[City], [t0].[Region], [t0].
[PostalCode], [t0].[Country], [t0].[Phone], [t0].[Fax]
FROM [dbo].[Customers] AS [t0]
WHERE [t0].[CustomerID] = @p0
-- @p0: Input String (Size = 5; Prec = 0; Scale = 0) [ANATR]
由于沒有提交修改,所以數(shù)據(jù)庫中的記錄還是沒有更新。由于這個特性,我們在使用存儲過程作為實體更新方法的時候就要當心了,存儲過程書寫錯誤,即使你提交了修改也很可能導致緩存中的數(shù)據(jù)和數(shù)據(jù)庫中的數(shù)據(jù)不一致,引起不必要的麻煩。
Linq DataContext隔離
有的時候我們會把對象從外部傳入Linq DataContext,要求它更新,由于不同的Linq DataContext是相對獨立的。由于新的Linq DataContext中還沒有獲取實體,我們只能通過附加方式更新數(shù)據(jù)。
首先把Customer表的主鍵字段加上IsVersion標識:
[Column(Storage="_CustomerID", DbType="NChar(5) NOT NULL",
CanBeNull=false, IsPrimaryKey=true, IsVersion = true)]
運行下面的測試代碼:
Customer c = new Customer { CustomerID = "ALFKI",
ContactName = "zhuye", CompanyName = "1111" };
ctx.Customers.Attach(c, true);
ctx.SubmitChanges();
會捕捉到下面的SQL語句:
UPDATE [dbo].[Customers]
SET [CompanyName] = @p2, [ContactName] = @p3, [ContactTitle] = @p4,
[Address] = @p5, [City] = @p6, [Region] = @p7, [PostalCode] = @p8,
[Country] = @p9, [Phone] = @p10, [Fax] = @p11WHERE ([CustomerID] = @p0) AND ([CustomerID] = @p1)
-- @p0: Input StringFixedLength (Size = 5; Prec = 0; Scale = 0) [ALFKI]
-- @p1: Input String (Size = 5; Prec = 0; Scale = 0) [ALFKI]
-- @p2: Input String (Size = 4; Prec = 0; Scale = 0) [1111]
-- @p3: Input String (Size = 5; Prec = 0; Scale = 0) [zhuye]
-- @p4: Input String (Size = 0; Prec = 0; Scale = 0) []
-- @p5: Input String (Size = 0; Prec = 0; Scale = 0) []
-- @p6: Input String (Size = 0; Prec = 0; Scale = 0) []
-- @p7: Input String (Size = 0; Prec = 0; Scale = 0) []
-- @p8: Input String (Size = 0; Prec = 0; Scale = 0) []
-- @p9: Input String (Size = 0; Prec = 0; Scale = 0) []
-- @p10: Input String (Size = 0; Prec = 0; Scale = 0) []
-- @p11: Input String (Size = 0; Prec = 0; Scale = 0) []
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Linq DataContext有什么用”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關知識等著你來學習!
網(wǎng)站標題:LinqDataContext有什么用
路徑分享:http://muchs.cn/article20/jsopjo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內鏈、外貿(mào)建站、網(wǎng)站維護、網(wǎng)站制作、ChatGPT、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)