npgsql 无法识别函数参数类型
npgsql does not recognize function parameter type
我首先使用带有 EntityFramework6.1.3 数据库的 Npgsql 2.2.5 和扩展上下文来调用一些服务器函数,其中一个给出了这个错误:
"ERROR: 42883: function insert_chempair(integer, unknown) does not exist"
ErrorSql:
select * 来自 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 "function insert_chempair(integer, text) does not exist" 字符串
使用 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;
$$;
我是不是做错了什么。
魔鬼在细节:
函数定义如下insert_chem_pair
但我打电话
insert_chempair
看来夏令时影响了我。
我首先使用带有 EntityFramework6.1.3 数据库的 Npgsql 2.2.5 和扩展上下文来调用一些服务器函数,其中一个给出了这个错误:
"ERROR: 42883: function insert_chempair(integer, unknown) does not exist"
ErrorSql: select * 来自 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 "function insert_chempair(integer, text) does not exist" 字符串 使用 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;
$$;
我是不是做错了什么。
魔鬼在细节:
函数定义如下insert_chem_pair
但我打电话
insert_chempair
看来夏令时影响了我。