我有一个存储函数,例如:
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支持这个吗?
答案 0 :(得分:1)
双击设计器。创建一个不会被覆盖的C#源文件。
所有生成的类都标记为partial,因此您可以在其中添加包装器/辅助函数。这是一种很常见的做法,我倾向于使用它。
<强>更新强>
根据函数的用例,包装器可能在Linq2SQL查询中不起作用。如果这是你想要的,请告诉我。我会删除我的答案。