私はTelerik Open/Data Access ORMをORACLEに対して使用しています。LINQから生成されたSQLに一貫性がありません
これらの2つのステートメントの結果、SQLコマンドが異なるのはなぜですか?以下の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);
結果
SELECT
a."MESSAGE_ID" COL1,
-- additional fields
FROM "XFE_REP"."WI_TRANSMITS" a
2番目のステートメント#2で生成されたクエリは、明らかに、テーブル内のすべてのレコードを返します。何百万という記録がこれを禁じられています。
投影がORMによって「IEnumerable」として返されるように見えます。最初のステートメントの後の両方のケースで 'query'の型は何ですか? –
彼らは両方ともIQueryableです(更新されたオリジナルのポスト) –
具体的なタイプは? –