如何創(chuàng)建CLR對象

這篇文章主要介紹了如何創(chuàng)建CLR對象,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)公司專注于天鎮(zhèn)企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站定制開發(fā)。天鎮(zhèn)網(wǎng)站建設(shè)公司,為天鎮(zhèn)等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站制作,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

一 創(chuàng)建CLR對象

1.在解決方案中添加新的C#SQL數(shù)據(jù)庫項目,命名為“ServiceClient”
2.為你的目標(biāo)數(shù)據(jù)庫選擇或添加注釋。(如果未被提示:右擊ServiceClient項目,選擇屬性,數(shù)據(jù)庫,瀏覽并選擇你的連接)
3.為創(chuàng)建的服務(wù)添加聲明
1)在解決方案瀏覽器中右擊“service”項目,選擇“調(diào)試”>“Start New Instance”
2)服務(wù)運行:右擊“ServiceClient”項目,選擇“Add Service Reference”
3)在“Service URI”中輸入:http://localhost:8000/services
4)點擊“OK”

二 CLR觸發(fā)器案例

[Microsoft.SqlServer.Server.SqlTrigger(Name="Trigger1",Target="ERP_STOCKYaoHuoDingDan",Event="FORINSERT")]  publicstaticvoidDingDanIDSameGongYingShangGUIDMustSame()  {  using(SqlConnectionconnection=newSqlConnection(@"contextconnection=true"))  {  connection.Open();  SqlCommandcommand=newSqlCommand(@"SELECTCOUNT(A.DingDanID)FROMERP_STOCKYaoHuoDingDanASA,INSERTEDASBWHEREA.DingDanID=B.DingDanIDANDA.GongYingShangGUID<>B.GongYingShangGUID",connection);  inti=(int)command.ExecuteScalar();  if(i>0)  {  try  {  //如果要插入的記錄不合法,則回滾.  TransactionTransactiontrans=Transaction.Current;  trans.Rollback();  }  catch(SqlExceptionex)  {

當(dāng)在觸發(fā)器內(nèi)部調(diào)用Transaction.Rollback方法時,將引發(fā)異常并顯示不明確的錯誤消息,必須在try/catch塊中包裝此方法或命令。您會看到如下錯誤消息:

Msg6549,Level16,State1,Proceduretrig_InsertValidator,Line0A.NETFrameworkerroroccurredduringexecutionofuserdefinedroutineoraggregate  'trig_InsertValidator':System.Data.SqlClient.SqlException:Transactionisnotallowedtorollbackinsideauserdefinedroutine,  triggeroraggregatebecausethetransactionisnotstartedinthatCLRlevel.Changeapplicationlogictoenforcestricttransactionnesting…Usertransaction,ifany,willberolledback.  此異常是預(yù)期行為,需要try/catch塊才能繼續(xù)執(zhí)行代碼。當(dāng)完成執(zhí)行觸發(fā)器代碼時,將引發(fā)另一個異常。  Msg3991,Level16,State1,Proceduretrig_InsertValidator,Line1Thecontexttransactionwhichwasactivebeforeenteringuserdefinedroutine,  triggeroraggregate"trig_InsertValidator"hasbeenendedinsideofit,whichisnotallowed.Changeapplicationlogictoenforcestricttransactionnesting.  Thestatementhasbeenterminated.此異常也是預(yù)期行為。  }  }  connection.Close();  }  }

調(diào)用CLR觸發(fā)器的例子

盡管引發(fā)了兩個異常,仍可以回滾事務(wù),并且更改不會提交到表中。

try  {  //用到此觸發(fā)器的方法  }  catch(SqlExceptionex)  {  if(ex.Number==3991)  {  LabelInfor.Text="同一張訂單必須是同一家供應(yīng)商。";  }  }  catch(Exceptionex)  {  }

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“如何創(chuàng)建CLR對象”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

新聞標(biāo)題:如何創(chuàng)建CLR對象
當(dāng)前鏈接:http://bm7419.com/article10/igccgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、云服務(wù)器、品牌網(wǎng)站建設(shè)、域名注冊搜索引擎優(yōu)化、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計