Обтекание сигнатур функций 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. Если это то, что вам нужно, дайте мне знать. Я удалю свой ответ.

Другие вопросы по тегам