Обтекание сигнатур функций linq-to-sql - PullRequest
1 голос
/ 21 января 2011

У меня есть сохраненная функция, например:

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 Ответ

1 голос
/ 21 января 2011

Дважды щелкните дизайнер. Будет создан исходный файл C #, который не будет перезаписан.

Все сгенерированные классы помечены как частичные, поэтому вы можете просто добавить туда свои функции-оболочки / помощники Это довольно распространенная практика, и я часто ее использую.

Обновление

В зависимости от варианта использования функций, оболочка может не работать в запросах Linq2SQL. Если это то, что вам нужно, дайте мне знать. Я удалю свой ответ.

...