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

走進(jìn)Linq-How do I(4)拾遺補(bǔ)零篇第一節(jié)

系列文章導(dǎo)航:

走進(jìn)Linq--Linq橫空出世篇

走進(jìn)Linq-輝煌的背后

走進(jìn)Linq-Linq大觀園

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

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

不能不說的C#特性-擴(kuò)展方法

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

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

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

走進(jìn)Linq-Linq to Objects(上)基礎(chǔ)篇

走進(jìn)Linq-Linq to Objects(下)實(shí)例篇

走進(jìn)Linq-Linq to SQL感性認(rèn)識篇

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

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

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

走進(jìn)Linq-How do I(4)拾遺補(bǔ)零篇第一節(jié)

走進(jìn)Linq-Linq to SQL源代碼賞析 Table的獲取過程

走進(jìn)Linq-Linq to SQL源代碼賞析之Provider的初始化

走進(jìn)Linq-Linq to SQL源代碼賞析,通過Linq to SQL看Linq


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

強(qiáng)類型DataContext

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

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

首先我們先手寫一個(gè)強(qiáng)類型的DataContext:

強(qiáng)類型的DataContext

系列文章導(dǎo)航:

走進(jìn)Linq--Linq橫空出世篇

走進(jìn)Linq-輝煌的背后

走進(jìn)Linq-Linq大觀園

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

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

不能不說的C#特性-擴(kuò)展方法

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

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

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

走進(jìn)Linq-Linq to Objects(上)基礎(chǔ)篇

走進(jìn)Linq-Linq to Objects(下)實(shí)例篇

走進(jìn)Linq-Linq to SQL感性認(rèn)識篇

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

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

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

走進(jìn)Linq-How do I(4)拾遺補(bǔ)零篇第一節(jié)

走進(jìn)Linq-Linq to SQL源代碼賞析 Table的獲取過程

走進(jìn)Linq-Linq to SQL源代碼賞析之Provider的初始化

走進(jìn)Linq-Linq to SQL源代碼賞析,通過Linq to SQL看Linq


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

ExecuteCommandExecuteQuery<TResult>Translate

這幾個(gè)方法都是為了和傳統(tǒng)的ADO.NET集成的。

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

使用起來很簡單:

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

ExecuteQuery<TResult>方法呢?顧名思義,就是執(zhí)行查詢的,也有兩個(gè)參數(shù),第一個(gè)接受查詢的SQL語句,第二個(gè)接受參數(shù),返回一個(gè)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轉(zhuǎn)換為現(xiàn)在的Linq to SQL方式,這樣有什么好處呢:

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

2.       可以使用查詢表達(dá)式的語法

 

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

1.       寫一個(gè)存儲過程

CREATE PROCEDURE dbo.CreatePost

(

@blogid int,

@title nvarchar(50),

@body nvarchar(500)

       )

AS

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

RETURN

 

當(dāng)然,這個(gè)存儲過程非常簡單,不值得這么去做,你就假設(shè)存在一個(gè)復(fù)雜的存儲過程

2.       Posts表拖到設(shè)計(jì)器上,上面的存儲過程拖到方法設(shè)計(jì)器上

3.       右鍵點(diǎn)擊設(shè)計(jì)器上的表,在右鍵菜單里會(huì)有一項(xiàng):配置行為(Config Behavior)

 

系列文章導(dǎo)航:

走進(jìn)Linq--Linq橫空出世篇

走進(jìn)Linq-輝煌的背后

走進(jìn)Linq-Linq大觀園

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

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

不能不說的C#特性-擴(kuò)展方法

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

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

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

走進(jìn)Linq-Linq to Objects(上)基礎(chǔ)篇

走進(jìn)Linq-Linq to Objects(下)實(shí)例篇

走進(jìn)Linq-Linq to SQL感性認(rèn)識篇

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

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

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

走進(jìn)Linq-How do I(4)拾遺補(bǔ)零篇第一節(jié)

走進(jìn)Linq-Linq to SQL源代碼賞析 Table的獲取過程

走進(jìn)Linq-Linq to SQL源代碼賞析之Provider的初始化

走進(jìn)Linq-Linq to SQL源代碼賞析,通過Linq to SQL看Linq




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

 

 

Linq to SQL中的事務(wù)

事務(wù)這個(gè)東西在并發(fā)的時(shí)候特別重要,Linq to SQL本身就支持事務(wù),不過是樂觀鎖。我們也可以顯式的啟動(dòng)Linq to SQL的事務(wù)。

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

            try

            {

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

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

                dbCtx.Transaction.Commit();

            }

            catch

            {

                dbCtx.Transaction.Rollback();

            }

DbConnectionBeginTransaction方法還可以接受一個(gè)枚舉參數(shù)IsolationLevel,來指定事務(wù)隔離的級別。

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

 

下一篇談?wù)?/span>RowVersion的問題

 

it知識庫走進(jìn)Linq-How do I(4)拾遺補(bǔ)零篇第一節(jié),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 饱满奶大30p | 纯肉高H放荡受BL文库 | 国内精品乱码卡一卡2卡三卡 | 精品久久久久久电影网 | 粉嫩自拍 偷拍 亚洲 | 久久re视频这里精品一本到99 | 啊…嗯啊好深男男小黄文 | 在线亚洲精品国产一区麻豆 | 亚洲精品一线二线三线无人区 | 日韩一区精品视频一区二区 | 小sao货ji巴cao死你视频 | 午夜一个人在线观看完整版 | 久久99蜜桃精品麻豆 | 国产福利视频一区二区 | 国产69精品久久久久乱码 | 欲奴第一季在线观看全集 | 精品国产国产综合精品 | 国产人在线成免费视频 | 欧美精品中文字幕亚洲专区 | 日本高清免费在线 | 国产 亚洲 中文字幕 在线 | 伦理 电影在线观看百度影音 | 久久99热只有频精品 | 暖暖日本手机免费完整版在线观看 | 国产午夜精品AV一区二区麻豆 | 九九久久国产精品免费热6 九九久久国产精品大片 | 欧美亚洲另类丝袜自拍动漫 | 色欲AV精品人妻一区二区三区 | 粉嫩小护士 | 国产亚洲精品久久久无码狼牙套 | 国产av久久免费观看 | 全免费a级毛片免费看 | 亚洲欧洲日产国产 最新 | 美女视频秀色福利视频 | 99精品国产高清自在线看超 | 欧美成人免费观看久久 | 国产3级在线观看 | 国产www视频 | 2022国产麻豆剧传媒剧情 | 印度老妇女bbbxxx | 伊人久久大香线蕉综合电影网 |