npgsql无法识别函数参数类型

时间:2015-03-30 10:23:46

标签: entity-framework stored-procedures npgsql

我首先使用Npgsql 2.2.5和EntityFramework 6.1.3数据库以及扩展上下文来调用一些服务器函数,其中一个给出了这个错误:

“错误:42883:函数insert_chempair(整数,未知)不存在”

ErrorSql:         select * from insert_chempair(((50066)),(('C1(= O)C(c2ccccc2)(CC)C(= O)NC(= O)N1')))

使用代码:

            public int AddChemPair(int cas,string smilesstr)
            {

                return this.Database.SqlQuery<int>("select * from insert_chempair(@p0,@p1)",(object)cas,(object)smilesstr).First();
            }

谷歌搜索建议使用类型化的参数我已经将对象参数更改为NpgsqlParameter类型但是错误没有太大区别:

BaseMessage“函数insert_chempair(整数,文本)不存在”字符串 使用SQLManagemnet studio我可以执行该功能。

CREATE FUNCTION insert_chem_pair(new_cas integer,new_smiles text) RETURNS integer
    LANGUAGE plpgsql STRICT
 AS $$
DECLARE new_id integer;
DECLARE new_smiles_id integer;
BEGIN
  select  * into new_smiles_id    from insert_smiles(new_smiles);
  select id into new_id  from chempair where cas=new_cas and smiles_id=new_smiles_id;
  if( new_id is NULL) then
    insert into chempair(cas,smiles_id) values(new_cas,new_smiles_id) returning chempair.id into new_id;
  end if;
  RETURN new_id;
END;
$$;

我做错了什么。

1 个答案:

答案 0 :(得分:0)

魔鬼详细说明:

功能定义如下insert_chem_pair 但我打电话 insert_chempair

看来DST影响了我。