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 个浮点参数——但问题是,我的 C# 项目中有代表这些值的对象。

所以我打开Visual Studio,将存储的函数拖到DBML设计器中,我得到了一个神奇的函数签名,其中包含所有这些double参数。有没有办法为此创建一个在我更新 DBML 时不会中断的包装器?我想创建一个函数,它接受两个类型化的参数,从这些对象中提取相关值,然后将它们发送到存储过程——同时仍然允许从 linq 查询中调用该包装函数。VS 支持这个吗?

4

1 回答 1

1

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

所有生成的类都被标记为部分的,所以你可以在那里添加你的包装器/帮助器函数。这是一种很常见的做法,我经常使用它。

更新

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

于 2011-01-21T05:20:09.383 回答