Я использую EF Core 2.
У меня есть пользовательская функция в моем SQL.
CREATE FUNCTION udfCPIAdjustedAmount
(
@WorkOrderID int,
@VendorContractPayItemID int,
@Qty decimal,
@QtyIdle decimal,
@QtyOT decimal
)
RETURNS decimal(18,2)
AS
BEGIN
-- code replaced with something simple
return @Qty * 2
END
Она объявлена в моем классе DbContext следующим образом:
[DbFunction("udfCPIAdjustedAmount", "dbo")]
public static decimal CPIAdjustedAmount(int WorkOrderID, int VendorContractPayItemid, decimal Qty, decimal QtyIdle, decimal QtyOT) { throw new Exception(); }
Я могу успешно позвонить с моего контроллера следующим образом:
decimal AdjustedAmount = (from wo in _context.WorkOrder
where wo.WorkOrderID == WorkOrderID
select PMSContext.CPIAdjustedAmount(WorkOrderID, VendorContractPayItemID, Qty, QtyIdle, QtyOT)).First();
Однако я чувствую, что должен быть более простой способ.Я не вижу смысла ссылаться на какую-либо конкретную таблицу в запросе LINQ (например, на таблицу WorkOrder в приведенном мной примере).Он возвращает десятичное значение и параметры в UDF не ссылаются на какие-либо данные запроса.
Я чувствую, что должен быть в состоянии сделать что-то вроде этого:
decimal AdjustedAmount = PMSContext.CPIAdjustedAmount(WorkOrderID, VendorContractPayItemID, Qty, QtyIdle, QtyOT);
Но это просто исключение.
Есть предложения?
TIA!