簡體   English   中英

使用 INCLUDE(NOT JOIN)將 LINQ 轉換為 LAMBDA Entity Framework Core

[英]Translate LINQ to LAMBDA Entity Framework Core using INCLUDE (NOT JOIN)

如何在 Entity Framework Core 中使用 Include 方法(而不是 Join 方法)調用多個實體? 我正在嘗試將此 LINQ 查詢轉換為 EF Core 5 語法,但我不知道如何調用多個實體並使用 include 方法將它們連接在一起。

        var reservations = from reservation in _dbContext.Reservations
                           join customer in _dbContext.Users on reservation.UserId equals customer.Id
                           join movie in _dbContext.Movies on reservation.MovieId equals movie.Id

                           select new
                           {
                               Id = reservation.Id,
                               ReservationTime = reservation.ReservationTime,
                               CustomerName = customer.Id,
                               MovieName = movie.Name
                           };

我嘗試使用多個 include 和 select 方法,但不知道如何調用多個實體並加入

這是我的模型

public class Reservation
{
    public int Id { get; set; }
    public int Qty { get; set; }
    public double Price { get; set; }
    public string Phone { get; set; }
    public DateTime ReservationTime { get; set; }
    public int MovieId { get; set; }
    public int UserId { get; set; }
}

public class Movie
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public string Language { get; set; }
    public string Duration { get; set; }
    public DateTime PlayingDate { get; set; }
    public DateTime PlayingTime { get; set; }
    public double TicketPrice { get; set; }
    public double Rating { get; set; }
    public string Genre { get; set; }
    public string TrailorUrl { get; set; }
    public string ImageUrl { get; set; }

    [NotMapped]
    public IFormFile Image { get; set; }
    public ICollection<Reservation> Reservations { get; set; }
}

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public string Role { get; set; }
    public ICollection<Reservation> Reservations { get; set; }
}

Controller 代碼:

        var reservations = _dbContext.Reservations
            .Include(r => r.Id)
            .Include(c => c.User)
            .Select(x => new { x.Id, x.ReservationTime, x.User, x.User.Name });

如果添加到Reservation導航屬性MovieUser ,可以簡化您的查詢。 Include不能與Select一起使用,它會被 EF 翻譯器忽略。

var reservations = _dbContext.Reservations
    .Select(r => new             
    {
        Id = r.Id,
        ReservationTime = r.ReservationTime,
        CustomerName = r.User.Id,
        MovieName = r.Movie.Name
    });

暫無
暫無

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

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