1

次のようなストアド関数があります。

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 つの float パラメーターが必要ですが、実際には、C# プロジェクトにこれらの値を表すオブジェクトがあります。

Visual Studio を開き、格納された関数を DBML デザイナーにドラッグすると、これらのdoubleパラメーターをすべて備えた魔法の関数シグネチャが得られます。DBML を更新しても壊れないラッパーを作成する方法はありますか? 2 つの型指定された引数を受け取り、それらのオブジェクトから関連する値を抽出してストアド プロシージャに送信する関数を作成したいと考えていますが、linq クエリからそのラッパー関数を呼び出すことは引き続き許可されています。VSはこれをサポートしていますか?

4

1 に答える 1

1

デザイナーをダブルクリックします。上書きされないAC#ソースファイルが作成されます。

生成されたすべてのクラスは部分的とマークされているため、そこにラッパー/ヘルパー関数を追加するだけです。これは非常に一般的な方法であり、私はよく使用する傾向があります。

アップデート

関数のユース ケースによっては、Linq2SQL クエリでラッパーが機能しない場合があります。これがあなたが求めているものなら、私に知らせてください。回答を削除します。

于 2011-01-21T05:20:09.383 に答える