簡體   English   中英

如何使用包含來包含與另一個實體不相關的實體

[英]How to use Include to include an Entity not related to another entity

我想通過構造一個嵌套的json對象來消耗一個WEB API。

我有兩個實體,班級和學生

在此處輸入圖片說明

我希望JSON輸出看起來像這樣的構造

[
  {
    "ClassId": 1,
    "ClassName": "Class A",
    "Students": [
      {
        "StudentId": 1,
        "StudentName": "student 1"
      },
      {
        "StudentId": 2,
        "StudentName": "student 2"
      }
    ]
  },
    {
    "ClassId": 2,
    "ClassName": "Class B",
    "Students": [
      {
        "StudentId": 3,
        "StudentName": "student 3"
      },
      {
        "StudentId": 4,
        "StudentName": "student 4"
      }
    ]
  }
]

在此處輸入圖片說明

當我嘗試在班級數據內部操縱學生數據時,我遇到了一個問題。

我正在嘗試此代碼,但它給了我一個錯誤。

public IQueryable<tbl_mosque> Gettbl_mosque()
{
    var Classes = db
        .Class
        .Include("Students")
        .Select(t => new Class
        {
            id = t.Id,
            name = t.Name,
            student = t.students.Select(p => new student
            {
                Id = p.id,
                Name = p.Name
            })
        }).ToList();

    return Classes;
}

您只需要

return db.Class.Include("Students").ToList();

Include表示引擎應包括實現Students

PS:您應該提到問題中的錯誤和堆棧跟蹤。

更新

如果相關表(在域語義中)之間沒有關系,則可以使用JOIN。 由於您具有一對多的關系,因此可以幫助您:

var classes = db.Classes.GroupJoin(db.Students, c => c.Id, s => s.ClassID,
                                             (c, s) => new {Class = c, Students = s});

在這里, classes是一個匿名類型的對象列表,該對象類型由Class對象組成,並與Students相關。

我現在無法對其進行測試,但是您可以按照以下步驟加入他們:

var joined = classesList.Join(studentsList, 
        _class => _class.Id, _student => _student.ClassId, 
        (_class, _student) => new Class
        {
           id = _class.Id,
           name = _class.Name,
           student = new student
           {
              Id = _student.id,
              Name = _student.Name
           })
        });

暫無
暫無

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

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