C# użycie SDO_ANYINTERACT

0

Witam,
mam proste zapytanie sql:

select a.id, a.nazwa from OBSZARY_A a, OBSZARY_B b 
where SDO_ANYINTERACT(a.geometry,b.geometry)='TRUE' and b.STATUS == "Nowa"

uruchomione w SQL Developer działa poprawnie.
W programie C# używam jednak 'Entity Framework'
Czyli mam zapytanie:

var tmpInJoin = from oa in OBSZARY_A
                join ob in OBSZARY_B on oa.ID equals (decimal)ob.ID_OG
                where ob.STATUS == "Nowa" && SDO_ANYINTERACT(a.geometry,b.geometry)='TRUE'
                select new
                {
                 ID = ob.ID,
                 NAZWA = ob.NAZWA
                };

Nie wiem jak w warunku **where ** mam zapisać użycie procedury: SDO_ANYINTERACT()
Ten kod się nie kompiluje.

2

Użyj FromSqlRaw() i zrób ręcznie zapytanie.

https://docs.microsoft.com/en-us/ef/core/querying/raw-sql

0

W ostateczności tak zrobię ale wolałbym używając 'Entity Framework'.

0

Możesz spróbować wykonać to tak jak tu: https://docs.microsoft.com/pl-pl/dotnet/framework/data/adonet/ef/language-reference/calling-functions-in-linq-to-entities-queries - nie wiem tylko czy ta funkcja jest dostępna w EntityFunctions czy gdziekolwiek po stronie EF.
Jeśli nie chcesz pisać gołego sqla to zrób sobie widok a w nim ustaw jako warunek SDO_ANYINTERACT(a.geometry,b.geometry)='TRUE'.
Potem możesz użyć tego widoku z poziomu DbContext

0

Użyj FromSqlRaw() i zrób ręcznie zapytanie.

Próbuję to tak zrobić, czyli:

var blogs = context.Blogs
    .FromSqlRaw("SELECT * FROM dbo.Blogs")
    .ToList();

ale nie widzę metody FromSqlRaw()

1

wklej tu swój kod bo nikt poza tobą nie wie co jest nie tak

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