天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

走進Linq-How do I(4)拾遺補零篇第一節

系列文章導航:

走進Linq--Linq橫空出世篇

走進Linq-輝煌的背后

走進Linq-Linq大觀園

不能不說的C#特性-對象集合初始化器

不能不說的C#特性-匿名類型與隱式類型局部變量

不能不說的C#特性-擴展方法

不能不說的C#特性-匿名方法和Lambda表達式

不能不說的C#特性-迭代器(上)及一些研究過程中的副產品

不能不說的C#特性-迭代器(下),yield以及流的延遲計算

走進Linq-Linq to Objects(上)基礎篇

走進Linq-Linq to Objects(下)實例篇

走進Linq-Linq to SQL感性認識篇

走進Linq-Linq to SQL How do I(1)

走進Linq-Linq to SQL How do I(2)

走進Linq-Linq to SQL How do I(3)

走進Linq-How do I(4)拾遺補零篇第一節

走進Linq-Linq to SQL源代碼賞析 Table的獲取過程

走進Linq-Linq to SQL源代碼賞析之Provider的初始化

走進Linq-Linq to SQL源代碼賞析,通過Linq to SQL看Linq


最近很忙,真的很忙,所以這個系列好久沒更新了,從今天起我又開始了我的走進Linq之旅。Linq to SQL的用法基本上都說完了,還有一些細枝末節的地方需要聊聊。

強類型DataContext

Linq to SQL的第一篇的時候就說道DataContext是一個入口點,我們使用Linq to SQL做的一些操作幾乎都是施加在這個類上的。在使用VS的設計器生成的代碼里,我們會看到一個從DataContext繼承的局部類,大家都習慣的將這個類稱之為強類型的DataContext,她對DataContext做了進一步的封裝。

今天我們先就對DataContext一些沒有介紹過的地方詳細討論一下。

首先我們先手寫一個強類型的DataContext:

強類型的DataContext

系列文章導航:

走進Linq--Linq橫空出世篇

走進Linq-輝煌的背后

走進Linq-Linq大觀園

不能不說的C#特性-對象集合初始化器

不能不說的C#特性-匿名類型與隱式類型局部變量

不能不說的C#特性-擴展方法

不能不說的C#特性-匿名方法和Lambda表達式

不能不說的C#特性-迭代器(上)及一些研究過程中的副產品

不能不說的C#特性-迭代器(下),yield以及流的延遲計算

走進Linq-Linq to Objects(上)基礎篇

走進Linq-Linq to Objects(下)實例篇

走進Linq-Linq to SQL感性認識篇

走進Linq-Linq to SQL How do I(1)

走進Linq-Linq to SQL How do I(2)

走進Linq-Linq to SQL How do I(3)

走進Linq-How do I(4)拾遺補零篇第一節

走進Linq-Linq to SQL源代碼賞析 Table的獲取過程

走進Linq-Linq to SQL源代碼賞析之Provider的初始化

走進Linq-Linq to SQL源代碼賞析,通過Linq to SQL看Linq


DataContext還有幾個我們比較感興趣的方法:

ExecuteCommandExecuteQuery<TResult>Translate

這幾個方法都是為了和傳統的ADO.NET集成的。

ExecuteCommand可以做insert,update,delete操作,第一個參數接受一個格式化的sql語句,第二個參數是參數數組:

使用起來很簡單:

dbCtx.ExecuteCommand("insert into posts(blogid,title,body) values({0},{1},{2})", "2", "走進Linq-How do I(4)", "廢話一篇");

ExecuteQuery<TResult>方法呢?顧名思義,就是執行查詢的,也有兩個參數,第一個接受查詢的SQL語句,第二個接受參數,返回一個IEnumerable<T>對象:

IEnumerable<Post> posts = dbCtx.ExecuteQuery<Post>("select * from posts where postid = {0}", "1");

            foreach (var post in posts)

                Console.WriteLine(post.Title);

Translate方法是將以前的DataReader轉換為現在的Linq to SQL方式,這樣有什么好處呢:

1.       可以利用現在的映射,不再需要這樣的語句post.Title = dr[1].ToString();

2.       可以使用查詢表達式的語法

 

對于插入,更新,刪除這些經常使用的操作,為了提高性能,或者做一些自定義的操作,你還可以覆蓋微軟默認為你提供的Insert,Update等方法:

1.       寫一個存儲過程

CREATE PROCEDURE dbo.CreatePost

(

@blogid int,

@title nvarchar(50),

@body nvarchar(500)

       )

AS

insert into posts(blogid,title,body) values(@blogid,@title,@body)

RETURN

 

當然,這個存儲過程非常簡單,不值得這么去做,你就假設存在一個復雜的存儲過程

2.       Posts表拖到設計器上,上面的存儲過程拖到方法設計器上

3.       右鍵點擊設計器上的表,在右鍵菜單里會有一項:配置行為(Config Behavior)

 

系列文章導航:

走進Linq--Linq橫空出世篇

走進Linq-輝煌的背后

走進Linq-Linq大觀園

不能不說的C#特性-對象集合初始化器

不能不說的C#特性-匿名類型與隱式類型局部變量

不能不說的C#特性-擴展方法

不能不說的C#特性-匿名方法和Lambda表達式

不能不說的C#特性-迭代器(上)及一些研究過程中的副產品

不能不說的C#特性-迭代器(下),yield以及流的延遲計算

走進Linq-Linq to Objects(上)基礎篇

走進Linq-Linq to Objects(下)實例篇

走進Linq-Linq to SQL感性認識篇

走進Linq-Linq to SQL How do I(1)

走進Linq-Linq to SQL How do I(2)

走進Linq-Linq to SQL How do I(3)

走進Linq-How do I(4)拾遺補零篇第一節

走進Linq-Linq to SQL源代碼賞析 Table的獲取過程

走進Linq-Linq to SQL源代碼賞析之Provider的初始化

走進Linq-Linq to SQL源代碼賞析,通過Linq to SQL看Linq




這樣就可以用你自定義的存儲過程做插入操作了。

 

 

Linq to SQL中的事務

事務這個東西在并發的時候特別重要,Linq to SQL本身就支持事務,不過是樂觀鎖。我們也可以顯式的啟動Linq to SQL的事務。

            dbCtx.Transaction = dbCtx.Connection.BeginTransaction();

            try

            {

                dbCtx.ExecuteCommand("insert into posts(blogid,title,body) values({0},{1},{2})", "2", "走進Linq-How do I(4)", "廢話一篇");

                dbCtx.ExecuteCommand("insert into posts(blogid,title,body) values({0},{1},{2})", "3", "走進Linq-How do I(5)", "廢話兩篇");

                dbCtx.Transaction.Commit();

            }

            catch

            {

                dbCtx.Transaction.Rollback();

            }

DbConnectionBeginTransaction方法還可以接受一個枚舉參數IsolationLevel,來指定事務隔離的級別。

對于那些多個DataContext之間的事務,我們可以使用.NET 2.0引入的TransactionScope

 

下一篇談談RowVersion的問題

 

it知識庫走進Linq-How do I(4)拾遺補零篇第一節,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 老司机试看午夜 | 中国少妇内射XXXHD免费 | 十分钟免费看完整视频 | 亚洲合集综合久久性色 | 色中色最新地址登陆 | 亚洲一区成人 | 99热精品在线视频观看 | 亚洲天堂999 | 亚洲日韩精品AV中文字幕 | 日本大片免a费观看视频 | 久久不卡免费视频 | 久就热视频精品免费99 | 久久综合中文字幕佐佐木希 | 久久精品国产亚洲AV未满十八 | 2021国产精品一卡2卡三卡4卡 | 亚洲风情无码免费视频 | 国精产品一区二区三区有限公司 | 花蝴蝶免费版高清版 | 国产色精品久久人妻无码看片 | 甜性涩爱在线播放 | 日韩精品一区二区三区AV在线观看 | 调教椅上的调教SM总裁被调教 | 免费精品美女久久久久久久久久 | 国产永久视频 | 97超碰在线视频人人av | 十八禁肉动漫无修在线播放 | 久久极品视频 | 亚洲国产成人精品青青草原100 | 3D漫画H精品啪啪无码 | acg全彩无遮挡口工漫画网址 | 国产成人无码一区AV在线观看 | 男女AA片免费 | 国产成人一区二区三区在线观看 | 嫩草伊人久久精品少妇AV网站 | 国产美女久久久久久久久久久 | 国产成人久久婷婷精品流白浆 | 99久久99 | 国产精品JK白丝AV网站 | 99久久免费热在线精品 | 老师紧窄粉嫩 | 澳大利亚剧满足在线观看 |