当前位置:  开发笔记 > 编程语言 > 正文

是否可以在LINQ to SQL中使用/访问标量函数?

如何解决《是否可以在LINQtoSQL中使用/访问标量函数?》经验,为你挑选了1个好方法。

我们的数据库中有标量函数,用于返回"客户的任务数量"或"客户的总发票金额"等内容.

我们正在尝试并试图尝试使用无存储过程来执行此操作...通常我们只需在存储过程中调用此函数并将其作为单个值返回.

有没有办法使用LINQ to SQL来使用或访问标量函数?如果是这样,我会有兴趣看一个如何...的例子,如果没有,如何处理这种情况最好...如果它甚至是可行的.



1> Marc Gravell..:

LINQ-to-SQL支持与UDF一起使用,如果这是你的意思.只需将UDF拖到设计器表面上即可完成.这会在标记[Function(..., IsComposable=true)]或类似的数据上下文中创建匹配方法,告诉LINQ-to-SQL它可以在查询中使用它(请注意EF不支持此用法).

然后,您将在查询中使用它,如:

var qry = from cust in ctx.Custs
           select new {Id = cust.Id, Value = ctx.GetTotalValue(cust.Id)};

这将成为TSQL的东西:

SELECT t1.Id, dbo.MyUdf(t1.Id)
FROM CUSTOMER t1

(或那里).

它是可组合的这一事实意味着您可以在查询中使用该值 - 例如在Where()/ WHERE- 中减少从服务器返回的数据(尽管显然UDF仍然需要以某种方式执行).

下面是一个类似的示例,显示了在数据上下文中使用的伪UDF,说明了未使用该方法的C#版本.

实际上,我目前正在研究这样的UDF以可组合的方式提供"模型外"数据 - 即系统的某个特定部分需要访问某些数据(恰好位于同一数据库中)同一模型的一部分,但我想以JOIN有趣的方式.我也有用于此目的的现有SP ...所以我正在考虑将这些SP移植到表格UDF,它提供围绕模型外数据的合同/抽象级别.因为它不是我的模型的一部分,我只能通过UDF获得它 - 但我保留了用我的常规模型组合它的能力.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有