1

是否可以将参数数组传递给通过 CFQL 生成的存储过程?

我们从设计师生成方法没有任何问题。但我还没有找到任何方法在 SQL Server 上单元执行它。

尝试通过代码执行时,代码将失败并出现给定错误:

操作数类型冲突:表类型与 int 不兼容

在生成的行上:

System.Data.IDataReader reader = CodeFluentContext.Get(XYZ.Constants.XYZCodeFluentStoreName).Persistence.ExecuteReader();

CFQL 正文如下:

LOAD (enumABCGroup[] groups) WHERE ABC.Group IN (@groups) ORDER BY NumberExt

生成过程为:

CREATE PROCEDURE [XYZ].[ABC_LoadByGroups]
(
   @groups [int],
   @_orderBy0 [nvarchar] (64) = NULL,
   @_orderByDirection0 [bit] = 0
)
AS
    SET NOCOUNT ON
    SELECT DISTINCT ... 
    FROM [XYZ].[ABC]
    WHERE [XYZ].[ABC].[ABC_Group] IN (@groups)
    ORDER BY [XYZ].[ABC].[ABC_Group] ASC, [XYZ].[ABC].[ABC_Label] ASC

    RETURN
GO

底层数据库系统是 SQL Server 2012 (v11.0.5058.0)。

谢谢你的帮助;

4

1 回答 1

1

我认为您忘记将 SQL Server 生产者配置为至少以 SQL Server 2008 为目标:

或在 XML 中:

<cf:producer name="SQL Server" typeName="CodeFluent.Producers.SqlServer.SqlServerProducer, CodeFluent.Producers.SqlServer">
  <cf:configuration targetVersion="Sql2008" />
</cf:producer>

下面是一些关于 CodeFluent 实体和 TVP 的有用资源:

于 2016-03-08T10:54:05.547 回答