【问题标题】:Scalar functions using BLToolkit and Linq使用 BLToolkit 和 Linq 的标量函数
【发布时间】:2011-07-07 09:38:21
【问题描述】:

我正在使用 BLToolkit 库将我的 SQL 过程转换为 Linq。

现在我遇到了一个小问题,所以如果有人知道这是否可能,我将非常感谢您的帮助。

无论如何,我的 sql 查询看起来像这样(注意:这不是我的实际表名,我只是翻译了它们,所以你们可以理解发生了什么)

select
     P.ProductsID,
     P.Name,
     P.Description,
     dbo.GetTax(P.TaxID, getdate()) -- this is what I need help with
from
     Products P

这里没什么特别的,只是我需要在当天为每件产品征税。

现在我需要将其转换为 Linq,但我不知道这是否可能。我试过这样的事情

from p in Products
select new
{
    p.ProductsID,
    p.Name,
    p.Description,
    GetTax(p.TaxID, DateTime.Today) //this is what I need help with
}

它不起作用。 GetWork 函数本质上只是另一个返回税金的 linq 查询。我不知道如何使用 BLToolkit 库调用标量函数。

所以问题是这样的。是否可以从 Linq selected 语句中调用标量函数?

【问题讨论】:

    标签: linq scalar bltoolkit


    【解决方案1】:

    在某处定义以下函数。

    [SqlFunction(ServerSideOnly=true)]
    public static double GetTax(int id, DateTime dt)
    {
        throw new NotImplementedException();
    }
    

    它将告诉 BLToolkit 将 GetTax 转换为 SQL。

    【讨论】:

    • 谢谢你的回答,但是我需要在这个方法体内写什么来从服务器函数返回值?
    • 什么都没有。示例已完成。 SqlFunction 属性告诉 BLToolkit 不要调用 GetTax,而是将其转换为 SQL。
    • 嘿嘿,谁会觉得比你这么简单:) PS如果你没看到,我前几天在GitHub上给你发了一个issue。
    猜你喜欢
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多