2015-03-30 1 views
0

Я использую Npgsql 2.2.5 с EntityFramework первой 6.1.3 базы данных и расширенного контекста для вызова некоторых функций сервера один из них дает эту ошибку:npgsql не распознает тип параметра функции

«ОШИБКА: 42883: функция insert_chempair (целочисленный, неизвестный) не существует «

ErrorSql: выберите * 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(); 
      } 

Googling предложил использовать типизированные параметры при I`ve изменен объект Params к типам NpgsqlParameter но EROR не сильно отличается:

BaseMessage «функция insert_chempair (целое число, текст) не существует» строки Использование SQLManagemnet студии i` m может выполнить функцию.

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; 
$$; 

Я делаю что-то неправильно.

+0

Я нашел его (insert_chem_pair! = Insert_chempair) – danisius

ответ

0

Дьявол в деталях:

Функция определяется как этот insert_chem_pair , но я называю insert_chempair

кажется DST повлияла на меня.