【问题标题】:SQLKata - Where ClauseSQLKata - Where 子句
【发布时间】:2019-08-22 17:03:14
【问题描述】:

我已经尝试使用 SqlKata 有一段时间了,我真的很困惑如何让一个简单的 WHERE 子句起作用。

我一直是这样做的:

var sistemas = DatabaseHelper.factory.Query("tblSistema").Where("id_fornecedor", fornc.id); 它返回给我一个 XQuery,我不知道如何执行它。请注意,在末尾附加 First() 和 Get() 会引发异常。 'sistemas.Get()' threw an exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException'

例如我只想SELECT * FROM tblSistema WHERE id_fornecedor=1

【问题讨论】:

  • "请注意,在末尾附加 First() 和 Get() 会引发异常。"哪个错误?
  • 'sistemas.Get()' 引发了“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”类型的异常
  • 这应该是问题的一部分,你为什么不edit呢?
  • 经过短暂的谷歌搜索后,我发现this SO 答案与您的异常有关。您是否有可能将动态对象传递给另一个程序集,或者沿着这条线传递?
  • 如果您在其中硬编码 1 而不是 fornc.id,您还会得到异常吗?

标签: c# sqlite sqlkata


【解决方案1】:
var book = db.Query("Books").Where("Id", 1).First();

Get() 执行XQuery 并返回List<dynamic>

var books = db.Query("Books").Where("Lang", "en").Get();

https://sqlkata.com/docs/execution/setup#queryfactory上查看更多信息

【讨论】:

    【解决方案2】:
    var sistemas = DB.Query("tblSistema").Select("*").Where("id_fornecedor", fornc.id);
    

    你也可以这样做:

    var sistemas = DB.Query("tblSistema").Select("*").Where("id_fornecedor", "=", fornc.id);
    

    运算符是可选的。 = 是默认值。

    如果你想做某些选择,你会这样做:

    var sistemas = DB.Query("tblSistema").Select("tblSistema.id_fornecedor", "tblSistem.blahSelect").Where("id_fornecedor", "=", fornc.id);
    

    【讨论】:

      猜你喜欢
      • 2019-10-12
      • 2019-06-18
      • 1970-01-01
      • 2018-11-08
      • 2022-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多