2013-01-18 17 views
11

Mam niektóre procedury przechowywane zmapowane w Entity Framework przy użyciu Database First. Tworzy on silnie typowane metody, które można wywołać w celu uruchomienia procedur składowanych. Wpadłem jednak na poważny problem, ponieważ nie widzę sposobu, aby wywołać te metody, które zostały utworzone z domyślnymi parametrami zdefiniowanymi w procedurach przechowywanych. Oznacza to:Entity Framework - procedura składowana wywołania z domyślnymi parametrami

a) Muszę ręcznie dodać parametry domyślne do wywołań metod, co jest kruchym, jeśli domyślna wartość parametru miała się kiedykolwiek zmienić.

b) Napisz metody przeciążenia ręcznie. Zasadniczo eliminuje to korzyści wynikające z generowania modelu z bazy danych.

Czy ktoś wie, czy istnieje lepsze rozwiązanie tego problemu?

Dzięki.

+0

zawsze można ustawić wartość domyślną dla właściwości obiektu za pośrednictwem okna właściwości. To nie pomoże.? –

+0

Wciąż wymagałoby to ręcznego wprowadzania wartości domyślnej - jeśli domyślna wartość proca kiedykolwiek się zmieniła, nie będzie możliwości automatycznej synchronizacji z modelem. – MgSam

+1

Czy możesz napisać procs, który zapewni Ci domyślne wartości z serwera? –

Odpowiedz

6

Od stycznia 2013 r. nie ma obsługiwanego sposobu, aby to zrobić.

Otworzyłem żądanie funkcji here.

+0

Może już to wiesz, ale .. z powodu migracji, zamknęli twój bilet i powinien on zostać ponownie otwarty w społeczności github, jeśli chcesz, aby był ponownie rozpatrywany https://github.com/aspnet/EntityFramework6/ problemy – Sycraw

3

Oto hacky rozwiązanie. Nie wiem, czy istnieje funkcja EF do obsługi opcjonalnych parametrów, ale możesz spróbować naśladować ją - jeśli chcesz zmienić zapisane procedury.

Możesz zmienić domyślną wartość w definicji procedury składowanej na NULL, a następnie w treści procedury zastąp parametry NULL wymaganą wartością domyślną. Następnie z kodu za pomocą EF można przekazać null, aby wskazać przy użyciu domyślnego. W ten sposób przynajmniej wartość domyślna jest zdefiniowana tylko w samym SP.

Wady obejmują oczywiście, że teraz NULL staje się wartością "pozapasmową", co oznacza, że ​​nie można jej przekazać do SP, jeśli tego właśnie potrzebujesz (poza koniecznością zmiany SP i zapewnienia wszystkich przyszłych używaj tej dziwnej konwencji)

+0

Tak, faktycznie zaproponowałem zrobienie tego, ale powoduje to inne komplikacje, więc niestety nie jest to opcja. – MgSam

Powiązane problemy