0

我的 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

在我的实体框架上导入它后,我会收到以下错误:当我尝试创建函数导入时,无法为可组合函数创建函数导入。我已经阅读了这篇类似的帖子 ,但不清楚在 EF 中创建的位置和内容以成功执行该功能。

任何建议/帮助将不胜感激。

4

1 回答 1

2

您需要将功能导入添加到 EDMX 的 SSDL 部分。如果您使用 XML 编辑器打开 EDMX,您将看到 EDMX 由三个部分组成:

  • 固态硬盘
  • CSDL
  • CS 映射

SSDL 在edm:StorageModels节点内部。这就是您需要添加函数导入的地方。如果您在 Visual Studio 中以 XML 格式打开 EDMX 文件,您将获得 IntelliSense,显示您可以添加一个 Function 节点。

于 2013-03-28T13:01:02.050 回答