2008博客园T恤 开发者征途系列图书
Windows Embedded 《大话设计模式》专题
技术书籍推荐专题 《你必须知道的.NET》
您的位置: Linq专题 » LINQ深入 >> Linq To Sql进阶系列

Linq To Sql进阶系列(四)User Define Function篇

作者:Tom Song  来源:博客园  时间:2008-09-27  阅读:281 次  原文链接   [收藏]  

User Define Function, 用户自定义函数,简称UDF. 关于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 中支持内联查询,这个又是Sprocs所不能及的。因此Linq To Sql 也支持UDF的内联查询。
2,SVF
看下面这个例子。返回某个类别产品最小的单元价格。

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

用OR Designer(请参考OR工具介绍 )将其映射为Dbml。如下

  <Function Name="dbo.MinUnitPriceByCategory" Method="MinUnitPriceByCategory"
  IsComposable
="true">
    
<Parameter Name="categoryID" Type="System.Int32" DbType="Int" />
    
<Return Type="System.Decimal" />
  
</Function>

继续>>下一页


相关链接





博客园知识库,专业的技术文章