簡體   English   中英

Linq查詢復雜類型模型

[英]Linq query for complex type model

我在一個模型中有多個表的類,如下所示:

public partial class Nurse
{
    public long Id { get; set; }
    public Nullable<System.Guid> Guid { get; set; }
    public long UserId { get; set; }
    public string Name {get;set;}
    public User user {get;set;}
}

我想像這樣使用join用所有詳細信息填充Nurse類的所有數據。

public List<Nurse> GetCareNurses(int id)
{
     var result = (from r in _context.Nurses
                          join u in _context.Users on r.UserId equals u.Id
                          where r.sector_id == id
                          select new Nurse { UserId = r.UserId, Name=u.FirstName+" " +u.LastName }).ToList();

    return result.ToList();              
}

它應該只填充我兩個表都需要的2個字段的數據,但會引發錯誤,因為The entity or complex type 'WatsonModel.Nurse' cannot be constructed in a LINQ to Entities query.

您不能投影到映射的實體(護士),但是可以投影到匿名類型或數據傳輸對象(DTO)來傳遞數據。

如果創建NurseDTO:

public class NurseDTO
{
    public string UserId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

然后致電GetCareNurses:

//Change 1: Change your List to List of type NurseDTO
 public List<NurseDTO> GetCareNurses(int id)
{
     var result = (from r in _context.Nurses
                          join u in _context.Users on r.UserId equals u.Id
                          where r.sector_id == id
                          //Change 2: Select new NurseDTO
                          select new NurseDTO { UserId = r.UserId, Name=u.FirstName+" " +u.LastName }).ToList();

    return result.ToList();              
}

您應該返回NurseDTO的列表

暫無
暫無

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

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