Entity Framework – wywoływanie procedur składowanych

2012-09-14

W dzisiejszym wpisie pokażę w jaki sposób za pośrednictwem Entity Framework możemy wywoływać procedury składowane zwracające wyniki w postaci wartości skalarnej lub poprzez parametr wyjściowy. Na początku stwórzmy w bazie danych dwie procedury składowane, pierwsza z nich zwraca wynik jako wartość skalarną, druga jako parametr wyjściowy:

create procedure Procedure1
    @number int
as
begin
    select @number * 2 as result
end

create procedure Procedure2
	@number int,
	@result int output
as
begin
	set @result = @number * 2
end

Następnie utworzone procedury należy dodać do modelu przechowywania (Storage Entity Model) poprzez wywołanie opcji Update Model from Database:

Kolejnym etapem jest dodanie powyższych procedur do modelu koncepcyjnego (Conceptual Entity Model) poprzez opcję Add -> Function Import (dla pierwszej procedury należy wskazać rodzaj zwracanego wyniku jako kolekcję wartości skalarnych):

Po tych czynnościach możemy już korzystać z utworzonych procedur składowanych.
Procedura zwracająca wartość skalarną:

using (TestEntities context = new TestEntities())
{
    int? result = context.Procedure1(10).FirstOrDefault();
    Console.WriteLine(result.ToString());
}

Procedura zwracająca wynik poprzez parametr wyjściowy (klasa ObjectParameter znajduje się w przestrzeni System.Data.Objects):

using (TestEntities context = new TestEntities())
{
    ObjectParameter result = new ObjectParameter("result", typeof(int));
    context.Procedure2(10, result);
    Console.WriteLine(result.Value);
}
Reklamy

Posted on 2012-09-14, in .NET/C# and tagged , , . Bookmark the permalink. Dodaj komentarz.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s

%d blogerów lubi to: