当前位置:主页   - 电脑 - 程序设计 - C#
LINQ体验(15)——LINQ to SQL语句之用户定义函数
来源:网络   作者:   更新时间:2012-08-05
收藏此页】    【字号    】    【打印】    【关闭

  用户定义函数

  我们可以在LINQ to SQL中使用用户定义函数。只要把用户定义函数拖到O/R设计器中,LINQ to SQL自动使用FunctionAttribute属性和ParameterAttribute属性(如果需要)将其函数指定为方法。这时,我们只需简单调用即可。

  在这里注意:使用用户定义函数的时候必须满足以下形式之一,否则会出现InvalidOperationException异常情况。

  具有正确映射属性的方法调用的函数。这里使用FunctionAttribute属性和 ParameterAttribute属性。

  特定于LINQ to SQL的静态SQL方法。

  .NET Framework方法支持的函数。

  下面介绍几个例子:

  1.在Select中使用用户定义的标量函数

  所谓标量函数是指返回在 RETURNS 子句中定义的类型的单个数据值。可以使用所有标量数据类型,包括 bigint 和 sql_variant。不支持 timestamp 数据类型、用户定义数据类型和非标量类型(如 table 或 cursor)。在 BEGIN...END 块中定义的函数主体包含返回该值的 Transact-SQL 语句系列。返回类型可以是除 text、ntext、image、cursor 和 timestamp 之外的任何数据类型。 我们在系统自带的NORTHWND.MDF数据库中,有3个自定义函数,这里使用TotalProductUnitPriceByCategory,其代码如下:

ALTER FUNCTION [dbo].[TotalProductUnitPriceByCategory]
(@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 = (Select SUM(UnitPrice)
            from Products
            where CategoryID = @categoryID)
  -- Return the result of the function
  RETURN @ResultVar
END

  我们将其拖到设计器中,LINQ to SQL通过使用 FunctionAttribute 属性将类中定义的客户端方法映射到用户定义的函数。请注意,这个方法体会构造一个捕获方法调用意向的表达式,并将该表达式传递给 DataContext 进行转换和执行。

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明