【问题标题】:comparing "string" and "null" in linq to entity将linq中的“string”和“null”与实体进行比较
【发布时间】:2014-11-29 18:51:15
【问题描述】:

我的代码:

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。
我应该怎么做才能使代码正常工作?

谢谢。

【问题讨论】:

  • 那么m.name的类型是什么?

标签: oracle linq entity-framework-4


【解决方案1】:

请注意,在 Oracle 中,空字符串为 NULL。

【讨论】:

    【解决方案2】:

    我不了解 Oracle + EF 和类型映射。但这并不是让谓词成为可选的方法,因为现在x ?? x.y 部分将始终是被翻译成SQL 的表达式的一部分。这可能会影响查询优化和性能。

    这样做的方法是:

    IQueryable<Entity> query = db.Entities;
    if (!string.IsNullOrWhiteSpace(name))
    {
        query = query.Where(m => m.Name == name);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      • 2017-09-25
      相关资源
      最近更新 更多