包装linq-to-sql函数签名

时间:2011-01-21 04:37:20

标签: c# visual-studio-2010 linq-to-sql stored-functions

我有一个存储函数,例如:

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 个答案:

答案 0 :(得分:1)

双击设计器。创建一个不会被覆盖的C#源文件。

所有生成的类都标记为partial,因此您可以在其中添加包装器/辅助函数。这是一种很常见的做法,我倾向于使用它。

<强>更新

根据函数的用例,包装器可能在Linq2SQL查询中不起作用。如果这是你想要的,请告诉我。我会删除我的答案。