Mój kod:
string name;
db.Entities.Where(m=>m.name==(name??m.name))
throw:Should be CHAR, but get NCLOB.
// ----------------
decimal? id;
db.Entities.Where(m=>m.id==(id??m.id))
The code is working.
moja baza danych to wyrocznia.
Co powinienem zrobić, aby kod działał?
Dzięki.
Odpowiedzi:
3 dla odpowiedzi № 1Uwaga: w Oracle pusty ciąg ma wartość NULL.
1 dla odpowiedzi nr 2
Nie wiem o Oracle + EF i mapowaniach typów. Ale i tak nie jest to sposób, aby predykaty były opcjonalne, ponieważ teraz część x ?? x.y
zawsze będzie częścią wyrażenia przetłumaczonego na SQL. Może to wpłynąć na optymalizację i wydajność zapytań.
Aby to zrobić, należy:
IQueryable<Entity> query = db.Entities;
if (!string.IsNullOrWhiteSpace(name))
{
query = query.Where(m => m.Name == name);
}