none
REST配合Poco時,傳回來錯誤? RRS feed

  • 問題

  • 各位大大安,

    小弟想請教一個問題,

    小弟最近在實作REST配合Poco時,

    回傳的時候,卻發生錯誤,不知道各位大大能不能給小第一些明路

    使用的是REST Template與Poco Template快速建置,

    已經有在context裡面加上了,關閉了Lazy Loading 和Proxy

    this.ContextOptions.LazyLoadingEnabled = false;

     

    this.ContextOptions.ProxyCreationEnabled = false;

    有設定中斷點在return ordere[0] 這個地方,變數是有抓到的,

    感覺是回傳的值Serialization出問題,翻了很多文章,但真的不知道怎麼解決。

        [WebGet(UriTemplate = "{id}")]
        public Orders Get(string id)
        {
          using(NorthwindEntities context = new NorthwindEntities())
          {
            //Customers customer = new Customers();
            List<Orders> orders = new List<Orders>();
            var query = from c in context.Customers.Include("Orders")
                  select c;
            orders = query.First().Orders.ToList();
    
            return orders[0];
          }
    
        }

    另外如下,如果直接只Select orders的話是可以的

        [WebGet(UriTemplate = "{id}")]
        public Orders Get(string id)
        {
          using(NorthwindEntities context = new NorthwindEntities())
          {
     
            var query = from c in context.Orders
                  select c;
    
    
            return query.First();
          }
    
        }

    同樣的如下,如果要取得Orders.Customers還是一樣不行...

        [WebGet(UriTemplate = "{id}")]
        public Customers Get(string id)
        {
          using(NorthwindEntities context = new NorthwindEntities())
          {
            var query = from c in context.Orders.Include("Customers")
                  select c;
    
            Orders orders = query.First();
    
            return orders.Customers;
          }
    
        }
    還請各位大大指點只教,謝謝>"<

    2010年5月12日 下午 01:44

解答

  • 後來有在網路上翻到一篇文章,自己解答一下~^^~

    網址如下

    http://nikhilthaker86.wordpress.com/tag/wcf-rest/

    以小弟拙劣的英文,大概的原因應該是
    因為無窮迴圈,使得序列化沒辦法產生出來,


    而使用[IgnoreDataMember]
    將此屬性不要序列化

    但這並非很好的解決方式,例如:如果將Customer的Orders屬性關掉的話,
    就變成,可以從Orders取得Customer屬性,但卻無法從Customer取得Orders。

    • 已標示為解答 Lolota Lee 2010年5月17日 上午 02:44
    2010年5月15日 上午 03:10