当前位置:首页 > 开发教程 > 数据库 >

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

时间:2013-05-06 17:44 来源: 作者: 收藏

本系列文章导航

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在某些细节上的差别

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
看下面这个例子。返回某个类别产品最小的单元价格。

Linq To Sql进阶系列(四)User Define Function篇CREATE FUNCTION [dbo].[MinUnitPriceByCategory]
Linq To Sql进阶系列(四)User Define Function篇(
@categoryID INT
Linq To Sql进阶系列(四)User Define Function篇)
Linq To Sql进阶系列(四)User Define Function篇
RETURNS Money
Linq To Sql进阶系列(四)User Define Function篇
AS
Linq To Sql进阶系列(四)User Define Function篇
BEGIN
Linq To Sql进阶系列(四)User Define Function篇    
-- Declare the return variable here
Linq To Sql进阶系列(四)User Define Function篇
    DECLARE @ResultVar Money
Linq To Sql进阶系列(四)User Define Function篇
Linq To Sql进阶系列(四)User Define Function篇    
-- Add the T-SQL statements to compute the return value here
Linq To Sql进阶系列(四)User Define Function篇
    SELECT @ResultVar = MIN(p.UnitPrice) FROM Products as p WHERE p.CategoryID = @categoryID
Linq To Sql进阶系列(四)User Define Function篇
Linq To Sql进阶系列(四)User Define Function篇    
-- Return the result of the function
Linq To Sql进阶系列(四)User Define Function篇
    RETURN @ResultVar
Linq To Sql进阶系列(四)User Define Function篇
Linq To Sql进阶系列(四)User Define Function篇
END

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

Linq To Sql进阶系列(四)User Define Function篇  <Function Name="dbo.MinUnitPriceByCategory" Method="MinUnitPriceByCategory"
  IsComposable
="true">
Linq To Sql进阶系列(四)User Define Function篇    
<Parameter Name="categoryID" Type="System.Int32" DbType="Int" />
Linq To Sql进阶系列(四)User Define Function篇    
<Return Type="System.Decimal" />
Linq To Sql进阶系列(四)User Define Function篇  
</Function>

继续>>下一页 [第1页][第2页][第3页][第4页] 0 0   标签: Linq To Sql进阶   

数据库阅读排行

最新文章