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

作者: Tom Song  來源: 博客園  發布時間: 2008-09-27 11:59  閱讀: 9541 次  推薦: 0   原文鏈接   [收藏]  
 

系列文章導航:

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

Linq To Sql進階系列(二)M:M關系

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

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

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

Linq To Sql進階系列(六)用object的動態查詢與保存log篇

Linq To Sql進階系列(七)動態查詢續及CLR與SQL在某些細節上的差別

 

Store Procedure,存儲過程。也是被別人寫過的東西。我習慣性先看別人都寫了點啥,然后才開始想看看自己還要寫點啥。那就先談談它與udf的區別吧。

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

1, SingleResultSet
我們先來看這個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

其生成的code如下。

        [Function(Name="dbo.[Customers By City]")]
        
public ISingleResult<Customers_By_CityResult> Customers_By_City([Parameter(DbType=
"NVarChar(20)")] string param1)
        
{
            IExecuteResult result 
= this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), param1);
            
return ((ISingleResult<Customers_By_CityResult>)(result.ReturnValue));
        }

這里Customers_By_CityResult是這個sprocs的影射類。但你可以在OR Designer里調整。如圖,

 

0
0
 
 
 

文章列表

全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()