Zagnieżdżanie using(var db = new DbContext())

Odpowiedz Nowy wątek
2015-02-25 10:53
Mały Kot
0

Siemanko, mam funkcję, w której pobieram dane z bazy danych przez EF, otaczając blok tego kodu

using(var db = new DbContext())

. W tym bloku wykonuje się również funkcja, w której tak samo jak w głównej jest aktualizacja danych w bazie przez EF, wszystko otoczone przez using(var db = new DbContext())


.

Co powiecie na takie zagnieżdżanie? Dobre, złe, szybkie, wole? Można lepiej?

Pozostało 580 znaków

2015-02-25 11:06
2

Powinieneś przekazać to db do metody zamiast tworzyć nowe.

Pozostało 580 znaków

2015-02-25 11:13
Mały Kot
0

Czy oby na pewno nie zostało to przewidziane przez EF? Przekazywanie kontekstu wygląda co najmniej dziwnie :)

Pozostało 580 znaków

2015-02-25 11:25
0

Tak szczerze mowiac to nie potrafie sobie wyobrazic sytuacji w ktorej przekazywanie/zagniezdzanie kontekstu byloby konieczne;)

Każdy nowy obiekt EF to nowe połączenie z bazą danych. Zapewne domyślasz się, że jeśli ma to jakiś wpływ na wydajność, to tylko i wyłącznie negatywny. Poza tym jak chciałbyś zrobić transakcję na dwóch (lub więcej) połączeniach z bazą? - ŁF 2015-02-25 13:50
Przeczytałem raz jeszcze to, co napisałeś i - wybacz - ale walnąłeś głupotę: jeśli nie przekażesz kontekstu ani nie "zagnieździsz" tworzenia go, to jak dostaniesz się do bazy danych? - ŁF 2015-02-25 13:52

Pozostało 580 znaków

2015-02-25 11:31
Mały Kot
0

W sumie gdyby przenieść obiekt pobierany w using, poza using, i pod usingiem wywołać funkcję, w której jest inny using to można się obejść. Rozwiązań jest masa, tylko chciałem się poradzić, które jest najlepsze.

Pozostało 580 znaków

2015-02-25 11:42
sgddg
0

daj konkretny przykład

Pozostało 580 znaków

2015-02-25 11:54
2

Kontekst powinien być polem klasy wstrzykiwanym przez konstruktor (ewentualnie można go opakować w jakiś Unit of Work), i wszystkie klasy korzystające z kontekstu powinny dostawać ten sam obiekt.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2015-02-25 12:22
Mały Kot
0
somekind napisał(a):

Kontekst powinien być polem klasy wstrzykiwanym przez konstruktor (ewentualnie można go opakować w jakiś Unit of Work), i wszystkie klasy korzystające z kontekstu powinny dostawać ten sam obiekt.

A co z klasami, w których mam same metody statyczne?

Pozostało 580 znaków

2015-02-25 12:48
2
Mały Kot napisał(a):

A co z klasami, w których mam same metody statyczne?

Usunąć i napisać porządnie.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2015-02-25 12:51
msm
1

A co z klasami, w których mam same metody statyczne?

Dlaczego musisz uzywać stateycznych klas? Przerobić na niestatyczne.

Chyba że to faktycznie jakieś drobne helpery do DbContextu do których tylko static pasuje, wtedy przekazywać dbcontext w parametrze (może nawet jako extension methods).

Pozostało 580 znaków

2015-02-25 12:55
Mały Kot
0

Szczerze mówiąc, ja tu tylko sprzątam, jeżeli chodzi o wzorzec według jakiego powstaje projekt. Mamy to tak podzielone, że w kontrolerach nie mamy w ogóle logiki, cała jest zawarta w modelach, które są partialami modeli z bazy danych. Oczywiście ogólny wzorzec to MVC.

Spotkaliście się już z czymś takim?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0