Avatar
tomas
Člen
Avatar
tomas:

Ahoj všem, než napíšu můj dotaz chci říct, že jsem se ptal strýčka gůgla, ale odpovědě jsem nenašel. Možná jsem se ptal špatně. K dotazu. Mám ms sql databázi, v ní mám uloženou proceduru a chci ji použít v kódu pomocí linq. Ale netuším jak. Našel jsem několik návodů, ale nevím si s nimi rady. Za prvé je potřeba ji importovat, což za mě udělalo samo studio(používám 2012 express). Ale jak ji použít? Používám následující.

DataEntity db = new DataEntity();

int lastID = db.sp_Procedura;

tohle mě nefunguje, už v návrhu mám část za rovnáse podtrhnutou. Přitom by měla tahle metoda vracet int. Z management studia spustit lze a vrátí jedno jediné číslo(int). Výše uvedeným zápisem načítám tabulky přidávám záznamy a podobně, ale s tou procedurou nevím. Procedury mám dvě, jedna mě vrací číslo a pomocí druhé potřebuji udělat insert do DB. Doufám, že jsem to popsal dostatečně, popřípadě další info dodám, pokud bude potřeba. Jinak se jedná o WF aplikaci v ASP.NET.

Metoda vytvořená studiem vypadá takto:

public virtual int sp_Procedura(ObjectParameter protocolID)
{
   return((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("sp_Procedura", protocolID);
}
 
Odpovědět 3.9.2014 9:11
Avatar
tomas
Člen
Avatar
tomas:

Procedura vypadá takto.

ALTER Procedure [dbo].[sp_Procedurer]

   @ProtocolID int = 0 OUTPUT

AS
   SELECT @ProtocolID = isnull(1+MAX(protocol_number),1) FROM DB.dbo.protokol

RETURN @ProtocolID
 
Nahoru Odpovědět 3.9.2014 10:50
Avatar
coells
Redaktor
Avatar
Odpovídá na tomas
coells:
int lastID = db.sp_Procedura;

Tohle není volání metody. ^^

 
Nahoru Odpovědět  +1 3.9.2014 12:05
Avatar
tomas
Člen
Avatar
Odpovídá na coells
tomas:

jasně, ta závorka mě utekla. Jak tak zkouším tak jsem přišel na jednu věc. I když procedura sama o sobě parametr nepotřebuje, tahle metoda ano. Zprvu jsem zkoušel NULL, ale nakonec jsem musel vytvořit proměnou typu ObjectParametr. Níže uvádím.

int LastProtocolID = db.sp_Procedura(new ObjectParameter("ProtocolID", 0);

Tohle už chybu nevyhodí, nic méně mě vrací neustále hodnotu -1. Což je špatně, procedura by měla vrátit hodnotu 1.

 
Nahoru Odpovědět 3.9.2014 12:22
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.