使用ODAC 11.2.0.2.30 Beta for Entity Framework and LINQ to Entities (以下簡稱 Oracle EF)來查詢資料,發生了以下的錯誤。
情境
發票的主檔與明細檔。
這只是相當簡單的查詢CREATE TABLE MYSCHEMA.INV
(
INVOICENO NUMBER(38),
NAME CHAR(10 BYTE)
)
CREATE TABLE MYSCHEMA.INVDETAIL
(
INVDETAILID NUMBER(38),
INVNO NUMBER(38),
QTY NUMBER(38),
AMT NUMBER(38)
)
並且,以 InvNO 做為關聯
執行下面的 LINQ To Entity
var context = new Entities(); var q = from m in context.INVs select new { m.INVOICENO, Amt = m.INVDETAILs.Sum(x => x.QTY * x.AMT) }; Console.WriteLine(((ObjectQuery)q).ToTraceString()); var resutl = q.ToList();
發生錯誤
Oracle.DataAccess.Client.OracleException: ORA-00904: "Extent1"."INVOICENO": invalid identifier
產生的sql 還有些長,就不貼出來了。
已在 Oracle ODP.NET Forum 上發問了。
說實話,這樣的查詢其實相當普遍,然而 Oracle 在 Alfa 版時竟沒查出,而在Beta 版時給普羅大眾給測到這個 bug,實在有些……
沒有留言:
張貼留言