0
返回不正确的数据我一直在使用Oracle的实体框架驱动的ASP.NET Web API的应用程序。我有一个为视图定义的实体,如下所示:ASP.NET从OData的控制器
CREATE OR REPLACE FORCE VIEW "PHASE_TWO"."EDIPRODUCT" ("ID", "STK_NUM", "TITLE", "ISBN", "UPC", "ITEMNO", "LONGFORMAT", "ABRIDGED", "WEB_TITLES_ID", "OCLC", "GENRE", "RELYEAR", "ORIG_REL", "LANG", "ORIG_STKNUM", "PUBLISHER", "PEOPLELIST", "SALES_ORG", "NOT_AVAIL") AS
SELECT sap_product.id,
sap_product.stk_num,
sap_product.longdesc AS title,
sap_product.isbn,
sap_product.upc,
sap_product.itemno,
sap_product.longformat,
sap_product.abridged,
mwt_product.web_titles_id,
mwt_product.oclc,
mwt_product.genre,
mwt_product.RELYEAR,
sap_product.orig_rel,
sap_product.lang,
sap_product.orig_stknum,
UPPER (publisher.name) publisher,
(SELECT LISTAGG (p.FULLNAME, ', ') WITHIN GROUP (
ORDER BY pp.rank) AS People
FROM people p
JOIN product_people pp
ON p.id = pp.peopleid
WHERE pp.stk_num = sap_product.stk_num
GROUP BY pp.STK_NUM
) PeopleList,
sppg.PRICING_TYPE as sales_org,
sap_product.not_avail
FROM sap_product
JOIN mwt_product ON sap_product.stk_num = mwt_product.stk_num
JOIN publisher ON mwt_product.publisherid = publisher.id
JOIN SAP_PRODUCT_PRICING_GROUP sppg on sppg.STK_NUM = mwt_product.stk_num and sppg.MARKED_FOR_DELETION = 0
WHERE mwt_product.WEB_PRODUCTS_ID > 0;
此视图在SQL Developer中按预期工作。在我的控制器我getEDIPRODUCT功能(是的,这是VB.NET)如下:
' GET: odata/EDIPRODUCTs
<EnableQuery>
Function GetEDIPRODUCT() As IQueryable(Of EDIPRODUCT)
Dim results As IQueryable
results = db.EDIPRODUCT
For Each _product In results
Console.Write(_product)
Next
Return results
End Function
我刚添加的对以循环检查的结果。我查看结果时看到的是每行返回相同的产品记录。为ID的值是重复的,并且应该具有变体值的唯一其他字段(如sppg.PRICING_TYPE sales_org)也只是重复。
我有这个地方不发生其他意见。正确的记录数总是返回,但检索到的第一个记录是始终只是重复的结果集的每一排。任何想法可能会发生在这里?
你有没有复制并粘贴到创建这个?如果是这样,很可能您错过了查询中的一个或多个更改。 –
我不确定你的意思。我在这里粘贴了查询,但使用设计器将视图添加到模型中,并且是最新的。 –