Mein Code:
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.
Meine Datenbank ist Oracle.
Was soll ich tun, damit der Code funktioniert?
Vielen Dank.
Antworten:
3 für die Antwort № 1Beachten Sie, dass in Oracle eine leere Zeichenfolge NULL ist.
1 für die Antwort № 2
Ich weiß nichts über Oracle + EF und tippe Mappings. Aber das ist nicht die Art, Prädikate trotzdem optional zu machen, weil jetzt der Teil x ?? x.y
wird immer Teil des Ausdrucks sein, der in SQL übersetzt wird. Dies kann die Abfrageoptimierung und -leistung beeinträchtigen.
Der Weg dazu ist:
IQueryable<Entity> query = db.Entities;
if (!string.IsNullOrWhiteSpace(name))
{
query = query.Where(m => m.Name == name);
}