Skocz do zawartości

[sfera]Pobranie dokumentów kilku określonych typów


Zobacz rozwiązanie Rozwiązane przez Wojciech Szopiński,

Polecane posty

Dzień dobry,

potrzebuję pobrać dokumenty zawierające określony produkt, mające określony status oraz będące określonego typu.

 

Mam coś takiego

IDokumenty dokumenty = sfera.PodajObiektTypu<IDokumenty>();

int asortymentId = 100047;
string[] statusy = { "P", "S", "W" };

var dokumentyZProduktem = dokumenty.Dane.Wszystkie()
    .Where(
        w =>
            w.Pozycje.Where(poz => poz.AsortymentAktualnyId == asortymentId).Count() > 0 &&
            statusy.Contains(w.StatusDokumentu.Mnemonik) &&
            w.Is(TypDokumentu.DokumentZakupu | TypDokumentu.DokumentSprzedazy | TypDokumentu.KorektaDokumentuSprzedazy)
                            
        );

Dwa pierwsze warunki działają, ale trzeci zwraca błąd

Cytat

System.NotSupportedException: „LINQ to Entities does not recognize the method 'Boolean Is(InsERT.Moria.ModelDanych.Dokument, InsERT.Moria.Dokumenty.Logistyka.TypDokumentu)' method, and this method cannot be translated into a store expression.”

Wiem z czego wynika ten błąd - nie można używać własnych funkcji gdy linq odwołuje się do sql - oraz wiem  że można to rozwiązać pobierając wszystkie dokumenty i filtrując je po stronie aplikacji.

Ale to dodatkowe spowolnienie dla aplikacji. Dlatego chała bym się dopytać czy jest jakaś opcja żeby określić kilka typów już na poziomie wyszukiwania w bazie?

Link to postu
×
×
  • Dodaj nową pozycję...