我的SQL Server中有一个标量值函数,它根据文本条目(varchar(max))返回ID (int),使用的函数返回某个序列号的产品SKU ID。
这是SQL函数。
CREATE function [dbo].[fGetPSKU]
(
@SerialNumber varchar(MAX)
)
returns int
begin
/*
local variables
*/
declare cmodel cursor local for
select PSKU.ProductSKUID, PSKU.ProductSKUValadationStart, PSKU.ProductSKUValadationEnd, PSKU.ProductSKUValadationMask, PSKU.PruductSKUValadationLength
from SCM.dbo.ProductSKU PSKU
where PSKU.ProductSKUActive = 0
and PSKU.ProductSKURequiresValadation = 1
order by PSKU.ProductSKUValadationEnd - PSKU.ProductSKUValadationStart desc, len(PSKU.ProductSKUValadationMask) desc, PSKU.ProductSKUDateCreated desc, PSKU.ProductSKUID desc
declare @mid int
declare @mstart int
declare @mend int
declare @masks varchar(max)
declare @lengths varchar(255)
declare @found int
declare @model int
/*
main code
*/
set @found = 0
set @model = -1
open cmodel
fetch next from cmodel into @mid, @mstart, @mend, @masks, @lengths
while @@fetch_status = 0 and @found = 0
begin
if exists
(
select null
from SCM..fParseDelimited(@masks, ',')
where ids = substring(@SerialNumber, @mstart, @mend - @mstart + 1)
)
and exists
(
select null
from SCM..fParseDelimited(@lengths, ',')
where ids = convert(varchar, len(@SerialNumber))
)
begin
set @found = 1
set @model = @mid
end
fetch next from cmodel into @mid, @mstart, @mend, @masks, @lengths
end
close cmodel
return @model
end
在我的实体框架上导入后,我收到以下错误:在尝试创建函数导入时,无法为可组合函数创建函数。我已经阅读了类似的 post 但是,在EF中创建函数的位置和内容并不是很清楚,以便成功执行该函数。
非常感谢任何建议/帮助。
答案 0 :(得分:2)
您需要将Funcion导入添加到EDMX的SSDL部分。如果使用XML编辑器打开EDMX,您将看到EDMX由三部分组成:
SSDL位于edm:StorageModels
节点内。这就是你需要添加函数导入的地方。如果在Visual Studio中以XML格式打开EDMX文件,则会获得IntelliSense,表明您可以添加Function节点。