中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

Linq To Sql進(jìn)階系列(五)Store Procedure篇

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

Linq To Sql進(jìn)階系列(一)從映射講起

Linq To Sql進(jìn)階系列(二)M:M關(guān)系

Linq To Sql進(jìn)階系列(三)CUD和Log

Linq To Sql進(jìn)階系列(四)User Define Function篇

Linq To Sql進(jìn)階系列(五)Store Procedure篇

Linq To Sql進(jìn)階系列(六)用object的動(dòng)態(tài)查詢與保存log篇

Linq To Sql進(jìn)階系列(七)動(dòng)態(tài)查詢續(xù)及CLR與SQL在某些細(xì)節(jié)上的差別


Store Procedure,存儲(chǔ)過(guò)程。也是被別人寫(xiě)過(guò)的東西。我習(xí)慣性先看別人都寫(xiě)了點(diǎn)啥,然后才開(kāi)始想看看自己還要寫(xiě)點(diǎn)啥。那就先談?wù)勊cudf的區(qū)別吧。

Linq To Sql進(jìn)階系列(四)User Define Function篇 中,我們提到了兩者的差別。比如Store Procedure支持多個(gè)rowset的,而udf不行。他們還有一些其他的差別。Store Procedure只能返回整型,而udf可以是其他類型,比如char等,除個(gè)別類型外,比如imager類型,是不可以做為udf的返回類型的。Store Procedure支持Out Parameter而udf沒(méi)有。

1, SingleResultSet
我們先來(lái)看這個(gè)sprocs.

CREATE PROCEDURE [dbo].[Customers By City]
    
-- Add the parameters for the stored procedure here
    (@param1 NVARCHAR(20))
AS
BEGIN
    
-- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
    
SELECT CustomerID, ContactName, CompanyName, City from Customers as c where
 c.City
=@param1
END

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

Linq To Sql進(jìn)階系列(一)從映射講起

Linq To Sql進(jìn)階系列(二)M:M關(guān)系

Linq To Sql進(jìn)階系列(三)CUD和Log

Linq To Sql進(jìn)階系列(四)User Define Function篇

Linq To Sql進(jìn)階系列(五)Store Procedure篇

Linq To Sql進(jìn)階系列(六)用object的動(dòng)態(tài)查詢與保存log篇

Linq To Sql進(jìn)階系列(七)動(dòng)態(tài)查詢續(xù)及CLR與SQL在某些細(xì)節(jié)上的差別


選中該函數(shù)后,右擊屬性。就可以使用其他影射類。但是Linq會(huì)對(duì)返回的rowset做檢查,如果發(fā)現(xiàn)返回結(jié)果和影射不匹配它會(huì)報(bào)錯(cuò)。而且一旦更改了,當(dāng)你需要改回去的時(shí)候,你只能在Designer中刪掉此sprocs,然后重新拖過(guò)來(lái)。
調(diào)用它很簡(jiǎn)單,就當(dāng)作一個(gè)函數(shù),但是,這里和普通的linq語(yǔ)句不一樣的地方是,它不是延遲加載的。

            DataClasses1DataContext db = new DataClasses1DataContext();
            db.Log 
= Console.Out;
            var q 
= db.Customers_By_City("London");

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

Linq To Sql進(jìn)階系列(一)從映射講起

Linq To Sql進(jìn)階系列(二)M:M關(guān)系

Linq To Sql進(jìn)階系列(三)CUD和Log

Linq To Sql進(jìn)階系列(四)User Define Function篇

Linq To Sql進(jìn)階系列(五)Store Procedure篇

Linq To Sql進(jìn)階系列(六)用object的動(dòng)態(tài)查詢與保存log篇

Linq To Sql進(jìn)階系列(七)動(dòng)態(tài)查詢續(xù)及CLR與SQL在某些細(xì)節(jié)上的差別


仔細(xì)比較他們的區(qū)別哦。“好像名字不一樣呢”。暈倒。看主要的。第一個(gè)只有一個(gè)ElementType子項(xiàng),而第二個(gè)有2個(gè)。這個(gè)地方其實(shí)可以說(shuō)是OR designer的一個(gè)bug。要想修改這個(gè)bug,需要更改一個(gè)設(shè)計(jì),而推動(dòng)更改設(shè)計(jì),比較麻煩。但并不是不能改。如果你認(rèn)為這個(gè)真的很需要,而且對(duì)你很重要,你更喜歡用or designer的話,我建議你去下面的社區(qū)發(fā)帖子。
http://forums.microsoft.com/MSDN/ShowForum.ASPx?ForumID=123&SiteID=1
要求更改此處的問(wèn)題。因?yàn)椋乙呀?jīng)無(wú)力推動(dòng)他們修復(fù)該bug,ms更樂(lè)意聽(tīng)來(lái)自客戶的聲音,說(shuō)不定你會(huì)成功的哦,還有獎(jiǎng)勵(lì)的哦。
這個(gè)sprocs準(zhǔn)確的影射代碼為

        [Function(Name="dbo.Get Customer And Orders")]
        [ResultType(
typeof(GetCustomerAndOrdersResult1))]
        [ResultType(
typeof(GetCustomerAndOrdersResult2))]
        
public IMultipleResults GetCustomerAndOrders([Parameter(Name="CustomerID",
DbType
="NChar(5)")] string customerID)
        
{
            IExecuteResult result 
= this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), customerID);
            
return ((IMultipleResults)(result.ReturnValue));
        }

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

Linq To Sql進(jìn)階系列(一)從映射講起

Linq To Sql進(jìn)階系列(二)M:M關(guān)系

Linq To Sql進(jìn)階系列(三)CUD和Log

Linq To Sql進(jìn)階系列(四)User Define Function篇

Linq To Sql進(jìn)階系列(五)Store Procedure篇

Linq To Sql進(jìn)階系列(六)用object的動(dòng)態(tài)查詢與保存log篇

Linq To Sql進(jìn)階系列(七)動(dòng)態(tài)查詢續(xù)及CLR與SQL在某些細(xì)節(jié)上的差別


3,OutParameters
似乎沒(méi)有什么好講的,很簡(jiǎn)單,當(dāng)作ref 的函數(shù)參數(shù)輸出的。其也只是在生成的函數(shù)里加了這么一句
outParameter =  ((System.Nullable<int>)(result.GetParameterValue(1))); 調(diào)用result.GetParameterValue方法,大家要記住這個(gè)哦。

4,Return Value
呀,把return value丟那里了。的確,Linq曾舍棄過(guò)return value.后來(lái)在qa的堅(jiān)持下,dev們決定保留了它。但是,需要你自己去更改code,才能獲得。我們可以從下面這個(gè)sprocs上獲得靈感。

CREATE PROCEDURE [dbo].[CustOrderTotal] 
@CustomerID nchar(5),
@TotalSales money OUTPUT
AS
SELECT @TotalSales = SUM(OD.UNITPRICE*(1-OD.DISCOUNT) * OD.QUANTITY)
FROM ORDERS O, "ORDER DETAILS" OD
where O.CUSTOMERID = @CustomerID AND O.ORDERID = OD.ORDERID

it知識(shí)庫(kù)Linq To Sql進(jìn)階系列(五)Store Procedure篇,轉(zhuǎn)載需保留來(lái)源!

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

主站蜘蛛池模板: 国产欧美日韩在线播放 | 国产精品乱码一二三区的特点 | 99综合 | 久久草在线视频 | 久久99国产精品 | 中文字幕视频在线观看免费 | 国产亚洲精品精品国产亚洲综合 | 粉嫩av在线 | 欧美成ee人免费视频 | 国产在线精品区 | 国产成人99久久亚洲综合精品 | 91.com在线观看 | 欧美亚洲国产一区二区三区 | 国产九九九九 | 亚洲国产精品久久久久婷婷老年 | 91精品国产综合久久香蕉麻豆 | 91大神在线资源观看无广告 | 综合精品在线 | 超碰天天 | 久久日韩精品一区二区三区 | 亚洲精品一区中文字幕乱码 | 色婷婷久久久久swag精品 | 精品综合| 91精品国产91久久综合桃花 | 国产精品免费在线 | 久草在线免费资源 | 久久久久国产一区二区三区四区 | 欧美成人a∨高清免费观看 色999日韩 | 日韩在线看片 | av网站免费观看 | 狠狠综合久久av一区二区小说 | 91视频网址 | 狠狠操狠狠操 | 爱爱爱av| 亚洲成人免费 | 亚洲成人在线免费 | 99精品久久99久久久久 | 国产精品99一区二区 | 成年人视频在线免费观看 | 国产福利观看 | 理伦毛片|