91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linq DataContext有什么用

發布時間:2021-12-01 16:49:28 來源:億速云 閱讀:132 作者:小新 欄目:編程語言

這篇文章主要介紹了Linq DataContext有什么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

主鍵緩存

Linq to sql對查詢過的對象進行緩存,之后的如果只根據主鍵查詢一條記錄的話會直接從緩存中讀取。比如下面的代碼:

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);

執行后只會產生一條SQL:

  1. SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].
    [ContactTitle], [t0].[Address], [t0].[City], [t0].[Region], [t0].
    [PostalCode], [t0].[Country], [t0].[Phone], [t0].[Fax]  

  2.  

  3. FROM [dbo].[Customers] AS [t0]  

  4.  

  5. WHERE [t0].[CustomerID] = @p0  

  6. -- @p0: Input String (Size = 5Prec = 0Scale = 0) [ANATR] 

由于沒有提交修改,所以數據庫中的記錄還是沒有更新。由于這個特性,我們在使用存儲過程作為實體更新方法的時候就要當心了,存儲過程書寫錯誤,即使你提交了修改也很可能導致緩存中的數據和數據庫中的數據不一致,引起不必要的麻煩。

Linq DataContext隔離

有的時候我們會把對象從外部傳入Linq DataContext,要求它更新,由于不同的Linq DataContext是相對獨立的。由于新的Linq DataContext中還沒有獲取實體,我們只能通過附加方式更新數據。

首先把Customer表的主鍵字段加上IsVersion標識:

  1. [Column(Storage="_CustomerID"DbType="NChar(5) NOT NULL"
    CanBeNull=falseIsPrimaryKey=trueIsVersion = true)] 

運行下面的測試代碼:

  1. Customer c = new Customer { CustomerID = "ALFKI"
    ContactName = "zhuye"CompanyName = "1111" };  

  2.  

  3. ctx.Customers.Attach(c, true);  

  4. ctx.SubmitChanges(); 

會捕捉到下面的SQL語句:

  1. UPDATE [dbo].[Customers]  

  2. SET [CompanyName] = @p2, [ContactName] = @p3, [ContactTitle] = @p4, 
    [Address] = @p5, [City] = @p6, [Region] = @p7, [PostalCode] = @p8, 
    [Country] = @p9, [Phone] = @p10, [Fax] = @p11  

  3. WHERE ([CustomerID] = @p0) AND ([CustomerID] = @p1)  

  4. -- @p0: Input StringFixedLength (Size = 5Prec = 0Scale = 0) [ALFKI]  

  5. -- @p1: Input String (Size = 5Prec = 0Scale = 0) [ALFKI]  

  6. -- @p2: Input String (Size = 4Prec = 0Scale = 0) [1111]  

  7. -- @p3: Input String (Size = 5Prec = 0Scale = 0) [zhuye]  

  8. -- @p4: Input String (Size = 0Prec = 0Scale = 0) []  

  9. -- @p5: Input String (Size = 0Prec = 0Scale = 0) []  

  10. -- @p6: Input String (Size = 0Prec = 0Scale = 0) []  

  11. -- @p7: Input String (Size = 0Prec = 0Scale = 0) []  

  12. -- @p8: Input String (Size = 0Prec = 0Scale = 0) []  

  13. -- @p9: Input String (Size = 0Prec = 0Scale = 0) []  

  14. -- @p10: Input String (Size = 0Prec = 0Scale = 0) []  

  15. -- @p11: Input String (Size = 0Prec = 0Scale = 0) [] 

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Linq DataContext有什么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

梁平县| 甘德县| 张家界市| 读书| 北辰区| 富蕴县| 双流县| 莒南县| 安阳县| 克东县| 安西县| 洪湖市| 金山区| 固原市| 鄂伦春自治旗| 正宁县| 察雅县| 普兰店市| 新化县| 黄山市| 隆化县| 内黄县| 河北省| 晋中市| 金寨县| 获嘉县| 洛阳市| 勐海县| 三原县| 民勤县| 安西县| 民权县| 密山市| 和硕县| 织金县| 汉川市| 吴桥县| 灵宝市| 日喀则市| 菏泽市| 淳化县|