2013-02-14 2 views
0

У меня есть 2 модели, заголовок заказа и подробный заказ.Как получить вложенный ответ JSON с WCF-структурой Entity Framework

Я хочу закончить с JSON ответ от сервера, который выглядит как:

--OrderHeader 1 
    | 
    --OrderDetails 1 
--OrderHeader 2 
    | 
    --Order Detail 2 

ли я использовать рамки сущности создать своего рода суб палочки запроса возвращают это через мой WebGet, или я прокладываться отдельно запросов и интегрировать формат после получения результатов?

Вот мои ViewModels:

public class OpenOrderHeader 
{ 
    public int CustomerID { get; set; } 
    public int OrderID { get; set; } 
    public int OrderUniqueNumber { get; set; } 
    public int NumberOfProductsOnOrder { get; set; } 
    public DateTime OrderDateCreated { get; set; } 
    public DateTime OrderDateUpdated { get; set; } 
    public string OrderLocalOnline { get; set; } 
    public int BranchID { get; set; } 
    public string PaymentMethod { get; set; } 
    public int OrderStatus { get; set; } 
    public string OrderCurrency { get; set; } 
    public decimal OrderConversionRate { get; set; } 
    public decimal SubTotalInclTax { get; set; } 
    public decimal SubTotalExclTax { get; set; } 
    public decimal DiscountInclTax { get; set; } 
    public decimal DiscountExclTax { get; set; } 
    public decimal ShippingInclTax { get; set; } 
    public decimal ShippingExclTax { get; set; } 
    public decimal PaymentFeeInclTax { get; set; } 
    public decimal PaymentFeeExclTax { get; set; } 

} 

public class OpenOrderProducts 
{ 
    public int OrderID { get; set; } 
    public string ProductSKUName { get; set; } 
    public int ProductSKUID { get; set; } 
    public string ProductSKUStockCode { get; set; } 
    public DateTime ProductAddedToOrder { get; set; } 
    public int QtyOfProductsOnOrder { get; set; } 
    public decimal UnitPriceinclTax { get; set; } 
    public decimal UnitPriceExclTax { get; set; } 
    public decimal UnitDiscountInclTax { get; set; } 
    public decimal UnitDiscountExclTax { get; set; } 
    public decimal LineItemTotalIncludingTax { get; set; } 
    public decimal LineItemExclTax { get; set; } 
    public decimal LineItemShippingCost { get; set; } 
} 
+1

Связанный: http://stackoverflow.com/q/14849876/861716 –

+0

@GertArnold Поэтому в основном я должен просто создать ленивый экземпляр загрузки, основанный на ограничении foreignkey. Таким образом, мой класс может выглядеть так: 'public class CustomerOrder { public int CustomerID {get; задавать; } public int OrderID {get; задавать; } public int OrderUniqueNumber {get; задавать; } public int NumberOfProductsOnOrder {get; задавать; } // Остаток заказаHeader Публичный виртуальный ICollection OrderProducts {get; задавать; } } ' –

+0

В вашем случае вы можете запросить все данные одним выстрелом, используя' Include'. Связанная ссылка касается рекурсивной структуры, которая требует более одного запроса. –

ответ

1

Просто создайте свойство навигации Orderdetails на OrderHeader лица. Тогда вы можете запросить

var data = db.OrderHeaders.Include(h => h.Orderdetails).ToList(); 

и сериализовать данные в JSON.

Я думаю, что в классах, которые вы показываете OpenOrderHeader, есть коллекция OpenOrderProducts?

public virtual ICollection<OpenOrderProduct> OpenOrderProducts { get; set; } 

(Как вы видите, я бы изменить имя класса в OpenOrderProduct, множественного числа)

Смежные вопросы