我的代码:
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.
我的数据库是oracle 我该怎么做才能使代码正常工作。?
感谢。
答案 0 :(得分:3)
请注意,在Oracle中,空字符串为NULL。
答案 1 :(得分:1)
我不了解Oracle + EF和类型映射。但这不是使谓词可选的方法,因为现在部分x ?? x.y
将始终是转换为SQL的表达式的一部分。这可能会影响查询优化和性能。
这样做的方法是:
IQueryable<Entity> query = db.Entities;
if (!string.IsNullOrWhiteSpace(name))
{
query = query.Where(m => m.Name == name);
}