Обтекание сигнатур функций linq-to-sql
У меня есть хранимая функция, такая:
CREATE FUNCTION RegionContains
(
@RegionX float, @RegionY float, @RegionRadius float,
@ObjectX float, @ObjectY float
)
RETURNS bit
AS
BEGIN
DECLARE @IsContained bit
DECLARE @ObjectRadius real
SELECT @ObjectRadius = SQRT(POWER(@ObjectX - @RegionX, 2) + POWER(@ObjectY - @RegionY, 2))
IF @ObjectRadius <= @RegionRadius
RETURN 1
RETURN 0
END
GO
Требуется 5 параметров с плавающей точкой - но дело в том, что в моем проекте C# есть объекты, которые представляют эти значения.
Поэтому я открываю Visual Studio и перетаскиваю сохраненную функцию в конструктор DBML, и получаю магическую подпись функции, в которой есть все эти double
параметры. Есть ли способ создать обертку для этого, которая не сломается, когда я обновлю DBML? Я хочу создать функцию, которая принимает два типизированных аргумента, которые извлекают соответствующие значения из этих объектов и затем отправляют их в хранимую процедуру - при этом все еще разрешено вызывать эту функцию-оболочку из запроса linq. VS поддерживает это?
1 ответ
Дважды щелкните дизайнер. Будет создан исходный файл A C#, который не будет перезаписан.
Все сгенерированные классы помечены как частичные, поэтому вы можете просто добавить туда свои функции-оболочки / помощники. Это довольно распространенная практика, и я часто ее использую.
Обновить
В зависимости от варианта использования функций оболочка может не работать в запросах Linq2SQL. Если это то, что вам нужно, дайте мне знать. Я удалю свой ответ.