2016-10-03 70 views
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)也只是重复。

我有这个地方不发生其他意见。正确的记录数总是返回,但检索到的第一个记录是始终只是重复的结果集的每一排。任何想法可能会发生在这里?

+0

你有没有复制并粘贴到创建这个?如果是这样,很可能您错过了查询中的一个或多个更改。 –

+0

我不确定你的意思。我在这里粘贴了查询,但使用设计器将视图添加到模型中,并且是最新的。 –

回答

0

我从来没有真正解决这个问题,我仍然有兴趣在为什么失败了,但我重写使用该视图中使用的OData的$扩大检索相关数据的应用程序的一部分。