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

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

系列文章導(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的動態(tài)查詢與保存log篇

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


User Define Function, 用戶自定義函數(shù),簡稱UDF. 關(guān)于sql server中的udf,請大家參考http://msdn.microsoft.com/msdnmag/issues/03/11/DataPoints/一文。本文主要闡述,在Linq To Sql中,如何使用UDF.

1,UDF 簡介
UDF可以分為兩中類型。一種為Scalar Valued Function,簡稱為SVF,是返回值類型的UDF. 另一種為Table Valued Function 簡稱為TVF,是返回一個table的UDF. 人們通常喜歡拿UDF和Store Procedure做比較。其實,他們各有千秋。UDF最多只能返回一個RowSet,而Store Procedure可以是多個。Store Procedure支持CUD操作,而UDF不支持。但是UDF在sql 中支持內(nèi)聯(lián)查詢,這個又是Sprocs所不能及的。因此Linq To Sql 也支持UDF的內(nèi)聯(lián)查詢。
2,SVF
看下面這個例子。返回某個類別產(chǎn)品最小的單元價格。

CREATE FUNCTION [dbo].[MinUnitPriceByCategory]
(
@categoryID INT
)
RETURNS Money
AS
BEGIN
    
-- Declare the return variable here
    DECLARE @ResultVar Money

    
-- Add the T-SQL statements to compute the return value here
    SELECT @ResultVar = MIN(p.UnitPrice) FROM Products as p WHERE p.CategoryID = @categoryID

    
-- Return the result of the function
    RETURN @ResultVar

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的動態(tài)查詢與保存log篇

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


在這里,筆者將帶著大家開始習(xí)慣用dbml來維護(hù)數(shù)據(jù)庫的映射,而不是code.在beta2發(fā)布后,有人很快就能發(fā)現(xiàn)mapping code無法編譯了。因為接口改動了。好,回歸正題。
無論是UDF還是Sprocs都會被映射為Function. 而IsComposable="true"是UDF獨有的一個特性,是標(biāo)志UDF身份的,Linq用它來區(qū)別Sprocs和UDF。這個字段說明,該函數(shù)是支持內(nèi)聯(lián)查詢的。Name則是其在數(shù)據(jù)庫中的名稱。再來看其生成的code.

        [Function(Name="dbo.MinUnitPriceByCategory", IsComposable=true)]
        
public System.Nullable<decimal> MinUnitPriceByCategory([Parameter(DbType="Int")]
      System.Nullable
<int> categoryID)
        
{
            
return ((System.Nullable<decimal>)(this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), categoryID).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的動態(tài)查詢與保存log篇

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


3,系統(tǒng)函數(shù)的映射
目前為止,無論是OR designer還是SqlMetal均不支持對系統(tǒng)函數(shù)的映射。筆者也只是嘗試著,手工映射,并成功調(diào)用。我們拿Var函數(shù)舉例。Var是求方差。讓我們來模仿上面那個dbml來改寫自己的dbml。我們將要多money類型做求var值。并且希望能夠調(diào)用sql server提供的var函數(shù)。那就需要我們將映射的名稱改成var,并且改動參數(shù)和返回值類型。其最后的dbml為:

  <Function Name="Var" Method="Var" IsComposable="true">
    
<Parameter Name="para" Type="System.Decimal" DbType="Money" />
    
<Return Type="System.Decimal" />
  
</Function>

系列文章導(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的動態(tài)查詢與保存log篇

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


4 TVF
返回一個table 的UDF稱為TVF.看下面例子


CREATE FUNCTION [dbo].[ProductsUnderThisUnitPrice]
(
@price Money
)
RETURNS TABLE
AS
RETURN
    
SELECT *
    
FROM Products as P
    
Where p.UnitPrice < @price

it知識庫Linq To Sql進(jìn)階系列(四)User Define Function篇,轉(zhuǎn)載需保留來源!

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

主站蜘蛛池模板: 亚洲成人精品 | 精品久久免费视频 | 亚洲 综合 欧美在线 热 | 无码中文字幕av免费放 | 菠萝蜜国际一区麻豆 | 丰满大爆乳波霸奶 | 色欲人妻无码AV精品一区二区 | 在线免费中文字幕 | 青柠在线观看免费完整版 | 午夜神器老司机高清无码 | 国产中文字幕一区 | 99久久精品久久久久久清纯 | 亚洲精品蜜夜内射 | 在线A亚洲老鸭窝天堂AV高清 | 亚洲欧洲日韩国产一区二区三区 | 在线精品视频成人网 | 京香在线播放 | 一级毛片在线免费视频 | 国产亚洲精品久久久久久白晶晶 | 亚洲国产货青视觉盛宴 | 俺来也俺去也视频久久 | 2020国产成人精品视频人 | 97视频在线免费 | 麻豆成人久久精品二区三区网站 | 九九电影伦理片 | 男人和女人全黄一级毛片 | 青柠在线观看视频在线高清 | 在线观看精品视频看看播放 | 老司机福利视频一区在线播放 | 欧美人与动牲交ZOOZ特 | 国产在线精品一区二区网站免费 | 天堂精品国产自在自线 | 娇妻让壮男弄的流白浆 | 国产一在线精品一区在线观看 | 久青草国产97香蕉在线视频 | 欧美v1deossexo高清 | 日本少妇内射视频播放舔 | 3344永久在线观看视频免费 | 精品夜夜澡人妻无码AV蜜桃 | 羞羞漫画视频 | 久久成人a毛片免费观看网站 |