簡體   English   中英

從模型中選擇所有行,並將嵌套的json元素作為另一個模型的外鍵,並選擇所有行

[英]Select all rows from a model and have a nested json element as the Foreign key to another model with all rows selected

我希望控制器返回的JSON元素如下所示

{           
    "model": "Ford",
    "make": "GT350R",
    "dealerName": "Dallas Ford",
    "location": {
        "dealerName": "Dallas Ford",
        "zip": 05700,
    }
}

我似乎無法在我的控制器中正確獲取查詢。 我想從“汽車模型”中選擇所有行和每個元素,以及在位置表中有外鍵的位置。 然后,我想將屬於該location元素的所有行嵌入到sub元素中。 我認為我可能需要告訴我的模型有關外鍵的信息,但是因為我使用的是相同的屬性名,所以我認為Entity Framework 6可以為我做到這一點。

這是我正在嘗試的代碼,它將僅從Cars中選擇所有結果,而不會將位置顯示為嵌套元素。

var query = (from results in db.Cars
             join location in db.Locations on results.DealerName equals location.Dealername
             select results);
return Ok(query.ToList());

這是它為每個元素顯示的json

{ 
    "model": "Ford",
    "make": "GT350R",
    "dealerName": "Dallas Ford",
}

這是我的模特

汽車模型

//......
[Key]
public string make { get; set; }
public string model { get; set; }
public Location Locations{ get; set; }//added this because someone in comments said to
public string dealerName { get; set; }
//........

位置模型

//......
[Key]
public string dealername{ get; set; }
public string Zip { get; set; }
//........

我認為代碼看起來應該是這樣,但我做的不正確。

var query = (from results in db.Cars
             join location in db.Locations on results.DealerName equals location.Dealername
             select new {
                 results = results;
                 results.location = location;
             });
return Ok(query.ToList());

嘗試這個

    var query = (from results in db.Cars
                 join location in db.Locations on results.dealerName equals location.dealerName 
                 select new {
                   model = results.model, make = results.make, dealerName = results.dealerName, location = location }     
             );
                return json(query.ToList());

使您的生活更簡單,並使用實體框架語法。 即使可以使用LINQ to SQL,使用起來也很冗長和麻煩。 所有你需要的是:

var query = db.Cars.Where(m => m.Locations.Any()).Include(m => m.Locations);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM