为什么在linq to sql中where条件没有传递给oracle?
考虑以下陈述。第一个是LINQ语句,第二个是老式的SQL。它们都能产生正确的结果。LINQ语句需要42秒,因为它没有将where子句传递给Oracle。Oracle必须执行一次完整的表扫描,然后LINQ在结果之后满足where子句。相反,SQL将where子句传递给Oracle,运行大约需要3秒钟 为什么LINQ不把where子句传递给Oracle?我能做些什么 林克: SQL:为什么在linq to sql中where条件没有传递给oracle?,sql,oracle,linq,Sql,Oracle,Linq,考虑以下陈述。第一个是LINQ语句,第二个是老式的SQL。它们都能产生正确的结果。LINQ语句需要42秒,因为它没有将where子句传递给Oracle。Oracle必须执行一次完整的表扫描,然后LINQ在结果之后满足where子句。相反,SQL将where子句传递给Oracle,运行大约需要3秒钟 为什么LINQ不把where子句传递给Oracle?我能做些什么 林克: SQL: 您使用的是哪家linq提供商,以及_entities.VW_QCRPT_SAMPLE_DLVRY_GRP_SITE是
您使用的是哪家linq提供商,以及_entities.VW_QCRPT_SAMPLE_DLVRY_GRP_SITE是如何定义的?您好,非常感谢您就此与我联系。我正在为缅因州环境保护局工作的项目。我们将非常感谢您的任何帮助。以下是您询问的具体问题:_context:public分部类QCReportEntities:DbContext{public QCReportEntities:basename=QCReportEntities{}2 System.linq的版本,它是4.3.0 3关于被查询的Oracle视图的信息。在Oracle中,它是大约5个表的简单内部联接。VW_QCRPT_SAMPLE_DLVRY_GRP_SITE返回什么数据类型?它返回两个字段,这两个字段都是字符串。where子句也是字符串。然后您无法从中选择。我一定是从IEnumerable和/或IQueryable派生出来的。我想知道可能只是前者而不是后者。
var SamDlvryGrps3 = (from x in _entities.VW_QCRPT_SAMPLE_DLVRY_GRP_SITE
where x.SAMPLEDELIVERYGROUP == EnteredsmplDlvryGrp
select new BatchIdModView
{
BatchId = x.BATCHID,
sampleDeliveryGroup = x.SAMPLEDELIVERYGROUP
}).Distinct().ToList();
string sql = "select distinct BatchId, sampleDeliveryGroup from VW_QCRPT_SAMPLE_DLVRY_GRP_SITE where SAMPLEDELIVERYGROUP = :1";
List<BatchIdModView> SamDlvryGrps = _entities.Database.SqlQuery<BatchIdModView>
(sql, new OracleParameter("@smplDlvryGrp", EnteredsmplDlvryGrp.ToUpper())).ToList();