繁体   English   中英

如何在Npgsql和Telerik OpenAccess中将复合类型用作参数

[英]How to use composite types as parameters with Npgsql and Telerik OpenAccess

我有一个PostgreSQL 9.1存储过程:

FUNCTION g_savedx(_cpatient text, o view_dx, n view_dx) RETURNS void 

其中view_dx是一个表。 如果我正确理解PostgreSQL手册,则将其用作存储过程的参数时,仅使用TYPE。 因此,该表将在这里显示为好像我使用了CREATE TYPE。

现在,Telerik EntityFramework会在域模型中编译以下定义:

        public int SaveDx(string cpatient, Object o, Object n)
    {
        OAParameter parameterCpatient = new OAParameter();
        parameterCpatient.ParameterName = "_cpatient";
        parameterCpatient.Size = -1;
        if(cpatient != null)
        {
            parameterCpatient.Value = cpatient;
        }   
        else
        {
            parameterCpatient.DbType = DbType.String;
            parameterCpatient.Value = DBNull.Value;
        }

        OAParameter parameterO = new OAParameter();
        parameterO.ParameterName = "o";
        parameterO.Value = o;

        OAParameter parameterN = new OAParameter();
        parameterN.ParameterName = "n";
        parameterN.Value = n;

        int queryResult = this.ExecuteNonQuery("SELECT * FROM \"public\".\"g_savedx\"(_cpatient, o, n)", CommandType.Text, parameterCpatient, parameterO, parameterN);

        return queryResult;
    }

编译后,Telerik抱怨:

指定的clr类型“对象”对于过程“ g_savedx”的参数n无效。

通过告诉Telerik使用CLR类型System.Object,尝试“修复”错误始终失败。

最终,这使我怀疑Telerik使用Npgsql作为PostgreSQL数据库的接口,并且Telerik在寻找PostgreSQL数据库报告的View_dx的DBType。 当然,这种类型在NpgsqlDbType枚举和System.Data DbType枚举中都不存在。

有人告诉我我错了! 或者,如何解决此问题,因为我真的很想使用带有复合类型作为参数的PostgreSQL存储过程。

非常感谢您的帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM