我有一个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存储过程。

非常感谢您的帮助。

  ask by Alan Wayne translate from so

本文未有回复,本站智能推荐:

1回复

如何从Entity Framework 6(数据库优先)和Npgsql执行存储过程?

这是错误吗? 我的组件是: .NET 4.6.1 实体框架6.0 Npgsql 3.0.5 PostgreSQL 9.5 首先,我在PostgreSQL 9.5中创建了一个表和存储过程 第二,我转到.edmx文件(实体框架6.0),选择“从
1回复

实体框架(Telerik)调用失败,对PostgreSQL存储过程执行ExecuteNonQuery

(PostgreSQL 9.1,Telerik OpenAccess v2.0.50727,PgAdmin III)。 我很难从(Telerik)实体框架调用存储过程。 确切的错误是: 用户代码未处理NpgsqlException。 错误:42703:列“患者”不存在。
1回复

npgsql无法识别函数参数类型

我先将Npgsql 2.2.5与EntityFramework 6.1.3数据库一起使用,并使用扩展上下文来调用某些服务器功能,其中之一给出了此错误: “错误:42883:函数insert_chempair(整数,未知)不存在” ErrorSql:选择* from insert_ch
1回复

如何使用npgsql在Postgres函数中将对象作为参数传递

在我的.net实现中,我想将.net对象作为postgresql的存储函数的参数传递。
1回复

使用npgsql填充数据的最佳方法

我正在使用npgsql连接到PostgreSQL。 这时,我通过手动生成具有多个数据记录的数千条INSERT语句来填充数据库中的表,例如 INSERT INTO tablename ( field1, field2 ) VALUES (1, "a"), (2, "b"), (3, "c")
1回复

如何从Dapper(使用Npgsql)中使用大小写混合的名称来调用存储过程?

从NuGet,我正在使用 ... \\ packages \\ Npgsql.2.2.5 \\ lib \\ net45 \\ Npgsql.dll ... \\ packages \\ Dapper.1.42 \\ lib \\ net45 \\ Dapper.dll
1回复

获取PostgreSQL存储过程的参数和结果类型的过程?

获取存储过程的参数和返回类型的过程是什么? (Google没有帮助:-()。 类似于以下内容: PostgreSQL 9.5 Npgsql 3.0.5
1回复

PostgreSQL:如何在C#中调用存储过程inout参数?

我可以从函数中获取数据,但是不能使用Npgsql在C#中调用存储过程参数。 你有想法吗?
1回复

Postgres和C#:无法加载类型Npgsql.NpgsqlConnectionFactory

我已经花了相当长的时间寻找有关此问题的指导。找不到答案。 尝试使用.net实体框架连接到PostgreSQL(似乎很明智,而不是围绕常规sql连接方法编写自己的框架)。 在执行以下代码行时,出现以下错误: 我的错误:外部异常: {“无法将Database.Defau
1回复

从Postgresql到.NET Core 2.0的Character的Npgsql数据类型映射

在PostgreSQL数据库中,我有一个RFC列,它是一种代码,用于标识墨西哥的企业和人民(出于税收目的),这些代码需要存储在数据库中。 此“代码”的格式类似于下一个: AAAXXXXXXAXX->其中A是字母,X是数字。 我想将RFC列存储为主键。 据我搜索,Postgr