簡體   English   中英

以JSON格式從LINQ to SQL檢索數據?

[英]Retrieving Data from LINQ to SQL in JSON format?

我有從數據庫到JSON格式的數據序列化問題。 我正在使用WebAPI 2和Entity Framework 6.我用EF創建了一個模型。 甚至創建了數據庫和包含內容的表。 當我使用下面的代碼時,我輸入http:// localhost:54149 / api / qr_group時出錯

控制器:

private EfContext db = new EfContext();

// GET api/<controller>
public IEnumerable<QR_Group> GetGroups()
{
    var result = from g in db.QR_Groups
                 select g;
    return result.ToList();
}

我不知道如何使用Newtonsoft.Json將表格與JSON格式的內容序列化。

我嘗試了以下代碼而不是上面的代碼:

public IQueryable<QR_Group> GetGroups()
{
  var groupList = (from g in db.QR_Groups
                   select new
                   {
                     name = g.name,
                     code = g.code
                   }).AsQueryable();

  var json = JsonConvert.SerializeObject(groupList);

  return json; //error CS0029: Cannot implicitly convert type `string' to `System.Linq.IQueryable<RestApi.Models.QR_Group>'
}

我得到錯誤CS0029 ..如何解決這個問題以返回json中的數據? 提醒:QR_Group實體有3列(Id,名稱,代碼)

特別是對於你的第二個函數,JsonConvert.SerializeObject只是將任何對象序列化為JSON格式字符串,這意味着你應該返回一個字符串而不是一個IQueryable <>。

因此,對於控制器,有很多方法可以將其返回,例如: 在MVC中,如何返回字符串結果?

編輯:

以下代碼將是一種應該工作的方式:

控制器:

private EfContext db = new EfContext();

// GET api/<controller>
public ActionResult GetGroups()
{
    var groupList = (from g in db.QR_Groups
    select new
    {
        name = g.name,
        code = g.code
    }).AsQueryable();

    return Content(JsonConvert.SerializeObject(groupList));
}

當你從api控制器返回列表時,你沒有提到錯誤。 因為我假設您正在返回一個數據庫實體,在簡單的情況下不允許您作為json結果,因為您的實體可能與數據庫中的其他實體鏈接。

您可以查看此鏈接以供參考

現在將代碼修改為如下所示。 這只是為了讓你明白。

定義類型說QR_Group_Return

public class QR_Group_Return{

    public string name{ get; set;}
    public string code{ get; set;}
    // Some other properties will go here.             
}

現在,而不是返回IEnumerable<QR_Group>我們將返回IEnumerable<QR_Group_Return>

private EfContext db = new EfContext();

// GET api/<controller>
public IEnumerable<QR_Group_Return> GetGroups()
{
    var result = (from g in db.QR_Groups
                 select new QR_Group_Return {
                           name = g.name,
                           code = g.code,
                           // map your other properties also
                           }).ToList();
    return result;
}

希望這可以幫助

暫無
暫無

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

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