EntityFramework - problem z wherem

0

Hej,

Mam dwa projekty jeden 'CORE' drugi 'DAL'. W dal mieści się EF a w core logika biznesowa. Dodałem referencje DAL do CORE i chciałbym wykonać 'Where'a na contexcie.
Wstrzykuję sobie do klasy context następnie próbuje wykonać np.

_context.EMA.Where(x => x.)

i tutaj mi krzyczy że on nie chce FUNCa tylko Experssion<Func>. Dzieje się to w klasy w projekcie 'CORE' we wszystkich funkcjach typu 'Where', 'FirstorDefaul' itp.
Natomiast gdy próbuje to wykonać w projekcie 'DAL' mogę normalnie wykonać zapytanie.

Miał ktoś może podobny problem?
Z góry dzięki za pomoc.

1

Mały problem polega na tym, że chcesz użyć metody rozszerzającej IEnumerable<T>, a nie IQueryable<T>. Można to "naprawić" dodając odpowiednią referencję.

Ale to dobrze, że na Ciebie krzyczy, bo obnaża to duży problem. To co chcesz zrobić jest po prostu pozbawione sensu. Po co dzielisz na jakieś moduły, skoro i tak chcesz mieć jedną warstwę?

0

Tak jak somekind napisał głównym problemem jest to że źle to projektujesz. Problem który opisujesz to tylko objaw, a nie przyczyna. Twój projekt Core nie powinien polegać na jakichkolwiek projektach infrastruktury. Powinieneś odwrócić zależności.

0

Hej, dzięki za szybkie odpowiedzi.
Generalnie planuje aplikację która będzie miała API, webUI oraz WinService.
WinService - będzie na bieżąco coś obliczać oraz korzystać z DAL
API - dla UI, api będzie też korzystać z DAL.
Core - części wspólne - tutaj z tego co widzę to chyba jednak nie będzie korzystać z DAL.

Chyba że źle to planuje. :P

0
Aventus napisał(a):

Tak jak somekind napisał głównym problemem jest to że źle to projektujesz. Problem który opisujesz to tylko objaw, a nie przyczyna. Twój projekt Core nie powinien polegać na jakichkolwiek projektach infrastruktury. Powinieneś odwrócić zależności.

Mógłbyś podpowiedzieć o jaki pakiet chodzi?

0

Teraz już lepiej kombinujesz. Może Win serwis powinien rownież komunikować się z API zamiast bezpośrednio korzystać z DALa.

Ogólnie to polecam poczytać o clean architecture i powiązanych zagadnieniach, bo z jednego wątku na forum ciężko żebyś nauczył się robić to prawidłowo. Tutaj dosyć lekka, aktualna i darmowa książka od Microsoftu: https://www.microsoft.com/net/download/thank-you/aspnet-ebook

0
shukibruck napisał(a):

Core - części wspólne - tutaj z tego co widzę to chyba jednak nie będzie korzystać z DAL.

Core może korzystać z DAL, ale nie powinien polegać na EntityFrameworku, który powinien być przez DAL ukryty. Wszelkie zapytania do bazy powinny być wykonywane w warstwie DAL, a jej metody powinny zwracać jakieś standardowe kolekcje, a nie iQueryable. To, co Ty chcesz zrobić z IQueryable dostępnym w Core to wyciek abstrakcji.

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