[代码]如何使用用户定义的表值函数(LINQ to SQL)
2010-10-22 23:45
676 查看
此示例代码主要示范如何将用户在SQL Server中定义的表值函数映射到对象模型中的函数,并是示范了如何调用这样的映射函数。
示范中用到的表值函数定义如下:
使用如下的方式来映射表值函数,特别需要注意的是,此次返回的是IQueryable<TEntity>,并且其内部调用的是DataContext.CreateMethodCallQuery(),而不是DataContext.ExecuteMethodCall()。
可以使用类似如下的方式调用上面创建的映射函数。本示例中是将表值函数的查询结果作为LINQ查询的数据源来使用,并且进行了链接查询。
示范中用到的表值函数定义如下:
CREATE FUNCTION ProductsCostingMoreThan(@Cost money) RETURNS TABLE AS RETURN SELECT ProductID, UnitPrice FROM Products WHERE UnitPrice > @Cost
使用如下的方式来映射表值函数,特别需要注意的是,此次返回的是IQueryable<TEntity>,并且其内部调用的是DataContext.CreateMethodCallQuery(),而不是DataContext.ExecuteMethodCall()。
[Function(Name="dbo.ProductsCostingMoreThan", IsComposable=true)] public IQueryable<ProductsCostingMoreThanResult> ProductsCostingMoreThan( [Parameter(Name="Cost", DbType="Money")] System.Nullable<decimal> cost) { return this.CreateMethodCallQuery<ProductsCostingMoreThanResult>(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), cost); }
可以使用类似如下的方式调用上面创建的映射函数。本示例中是将表值函数的查询结果作为LINQ查询的数据源来使用,并且进行了链接查询。
NorthwindDataContext db = new NorthwindDataContext(@"C:/LINQ/Northwind.mdf"); var PartialProducts = from P1 in db.ProductsCostingMoreThan(80.50m) join P2 in db.Products on P1.ProductID equals P2.ProductID select new { P1.ProductID, P2.UnitPrice }; foreach (var ProductObject in PartialProducts) { Console.WriteLine("ProductID={0} UnitPrice={1}", ProductObject.ProductID, ProductObject.UnitPrice); Thread.Sleep(100); }
相关文章推荐
- [代码]如何使用用户定义的标量值函数(LINQ to SQL)
- [代码]如何以内联方式调用用户定义的函数(LINQ to SQL)
- LINQ体验(15)——LINQ to SQL语句之用户定义函数
- [代码]如何使用存储过程返回行集(LINQ to SQL)
- [代码]如何使用带参数的存储过程(LINQ to SQL)
- [代码]如何使用为多个结果形状映射的存储过程(LINQ to SQL)
- [代码]如何使用为顺序结果形状映射的存储过程(LINQ to SQL)
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
- 如何在 ASP.NET项目里面正确使用Linq to Sql(转)
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
- 如何使用LINQ to SQL插入、修改、删除数据
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
- Linq to SQL如何使用Visual Studio 2012创建DBML文件并连接到数据库表
- LINQ To SQL 之 Expression中如何定义String类型的GreaterThanOrEqual (转)
- 艾伟:如何在ASP.NET项目里面正确使用Linq to Sql
- [代码]使用函数构造创建具有属性的元素(LINQ to XML)
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据