/ / "string" und "null" in linq mit entity vergleichen - oracle, linq, entity-framework-4

Vergleichen von "string" und "null" in linq mit entity - oracle, linq, entity-framework-4

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 № 1

Beachten 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);
}