【发布时间】:2016-11-30 15:54:47
【问题描述】:
我正在针对 ORACLE 使用 Telerik Open/Data Access ORM。
为什么这两条语句会导致不同的 SQL 命令?
声明 #1
IQueryable<WITransmits> query = from wiTransmits in uow.DbContext.StatusMessages
select wiTransmits;
query = query.Where(e=>e.MessageID == id);
以下 SQL 的结果
SELECT
a."MESSAGE_ID" COL1,
-- additional fields
FROM "XFE_REP"."WI_TRANSMITS" a
WHERE
a."MESSAGE_ID" = :p0
声明 #2
IQueryable<WITransmits> query = from wiTransmits in uow.DbContext.StatusMessages
select new WITransmits
{
MessageID = wiTranmits.MessageID,
Name = wiTransmits.Name
};
query = query.Where(e=>e.MessageID == id);
以下 SQL 的结果
SELECT
a."MESSAGE_ID" COL1,
-- additional fields
FROM "XFE_REP"."WI_TRANSMITS" a
使用第二条语句#2 生成的查询返回,显然当我只想要一条时,表中的每条记录。数以百万计的记录使这令人望而却步。
【问题讨论】:
-
看起来投影被 ORM 返回为
IEnumerable。在第一个语句之后的两种情况下query的类型是什么? -
它们都是 IQueryable
(更新原帖) -
具体类型呢?
-
这不是 PL/SQL 问题。我想你的意思是
sql。
标签: c# linq plsql telerik-open-access