Скалярные функции с использованием BLToolkit и Linq - PullRequest
2 голосов
/ 07 июля 2011

Я в процессе преобразования моих процедур SQL в Linq с помощью библиотеки BLToolkit.

Теперь я застрял на небольшой проблеме, поэтому, если кто-нибудь знает, возможно ли это, я буду очень признателен за помощь.

В любом случае у меня есть 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?

1 Ответ

4 голосов
/ 07 июля 2011

Определите где-нибудь следующую функцию.

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

Он скажет BLToolkit перевести GetTax в SQL.

...