2013-03-12 54 views
0

我想用我的EF查詢獲得嵌套的JSON回覆,但不知道如何執行此操作。 我宣佈我的模型如下:如何使用實體框架查詢創建嵌套的JSON響應

[Serializable] 
    public class StockReturnMethod 
    { 
     public int WarehouseID { get; set; } 
     public int ProductSKUID { get; set; } 
     public int LotID { get; set; } 
     public string LotName { get; set; } 
     public int AreaID { get; set; } 
     public string AreaName { get; set; } 
     public int BinID { get; set; } 
     public string BinName { get; set; } 
     public List<AvailibleStock> Stock { get; set; } 
    } 


    [Serializable] 
    public class AvailibleStock 
    { 
     public int WarehouseID { get; set; } 
     public int ProductSKUID { get; set; } 
     public string ProductSKUName { get; set; } 
     public string WarehouseName { get; set; } 
     public string Status { get; set; } 
     public int QtyUnassigned { get; set; } 
    } 

這裏是我的EF查詢,我有這麼遠。

{ 
     return (from WH in SCMENT.Warehouses 
       join WL in SCMENT.WarehouseLots on WH.WarehouseID equals WL.WarehouseID 
       join WA in SCMENT.WarehouseAreas on WL.WarehouseLotID equals WA.WarehouseLotID 
       join WB in SCMENT.WarehouseBins on WA.WarehouseAreaID equals WB.WarehouseAreaID 
       join SLI in SCMENT.StockLineItems on WH.WarehouseID equals SLI.WarehouseID 
       join PSKU in SCMENT.ProductSKUs on SLI.ProductSKUID equals PSKU.ProductSKUID 
       where SLI.SystemAreaID == 1 

       select new StockReturnMethod() 
       { 
       WarehouseID = WH.WarehouseID, 
       LotID = WL.WarehouseLotID, 
       LotName = WL.WarehouseLotName, 
       AreaID = WA.WarehouseAreaID, 
       AreaName = WA.WarehouseAreaName, 
       BinID = WB.WarehouseBinID, 
       BinName = WB.WarehouseBinName, 
       ProductSKUID = PSKU.ProductSKUID, 
       Stock = (Will I create a sub query here?) 


       } 

    ) 

回答

1
public List<AvailibleStock> Stock { get; set; } 

更改爲:

public IList<AvailibleStock> Stock { get; set; } 

編輯:下面是我的一個項目工作的樣本,你可以作爲參考使用:

public class StatisticsModel 
{ 
    public int Id { get; set; } 
    public int ClientId { get; set; } 
    public int Opened { get; set; } 
    public IEnumerable<LocationsModel> Locations { get; set; } 
} 


public class LocationModel 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public int OpenCount { get; set; } 
} 


return dbSet.Select(x => new StatisticsModel 
{ 
    Id = x.Id, 
    ClientId = x.ClientId, 
    Opened = x.OpenCount, 
    Locations = x.Locations.Select(z => new LocationsModel{ 
     Id = z.Id, 
     Name = z.Store.Name, 
     OpenCount = z.OpenCount 
    }) 
}) 
+0

添加建議的更改,我get ****無效的初始化成員聲明符****用以下代碼行:SLI.select(z => new AvailibleStock – 2013-03-12 09:02:28

+0

因爲我沒有洞察力在你的數據表中,我已經爲你提供了我的一個模型和預測。我相信你將能夠提取邏輯。 – 2013-03-12 12:11:59

+1

你先生是一位紳士和學者! – 2013-03-12 12:26:34