首页 > 解决方案 > 如何在 NET Core 中使用 LINQ 检查用户是否已提供乘车服务

问题描述

public class User
    {
        [Key]
        public Guid Id { get; set; }

        [Required(ErrorMessage = "Name is required")]
        [MaxLength(250, ErrorMessage = "Username exceed 15 characters")]
        public string UserName { get; set; }

        public ICollection<Vehicle> Vehicles { get; set; }

    }


 public class Vehicle
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }

        [Required]
        public string Name { get; set; }

        public string Brand { get; set; }


        public string PlateNumber { get; set; }

        public Guid UserId { get; set; }
        public User User { get; set; }


        public ICollection<Ride> Rides { get; set; }
    }

public class Ride
    {
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
        public DateTime RideStartTime { get; set; }


        //Relationship 
        //Ride has One Vehicle
        public int VehicleId { get; set; }
        public Vehicle Vehicle { get; set; }

        //Ride has One Vehicle
        public int EventId { get; set; }
        public Event Event { get; set; }


    }


// In RideRepository
    public bool IsRideExists(int vehicleId, int eventId )
        {

            return RepositoryContext.Rides.Any(ride => ride.VehicleId.Equals(vehicleId) && ride.EventId.Equals(eventId));
        }
One to many
My relationship in ef core
One user can have many vehicle
One vehicle has one user

One to many
One ride can have one vehicle
one vehicle can have many ride

Many to many
one ride can have one event
one event can have one ride

用户每次活动只能提供一辆车。1 个用户的 1 个事件。我的问题是当我提供乘坐另一辆车时,优惠乘坐已成功进入数据库,我想使用 LINQ 命令检查一辆车是否已经提供乘坐,用户不能为同一事件提供使用其他车辆的乘坐

标签: c#linq.net-core

解决方案


将您的存在更改为此行中的某些内容,添加userId您的参数

RepositoryContext.Rides.Any(ride => (ride.VehicleId.Equals(vehicleId) && ride.EventId.Equals(eventId)) || (ride.Vehicle.UserId == userId && ride.EventId.Equals(eventId)));

|| (ride.Vehicle.UserId == userId && ride.EventId.Equals(eventId))将检查用户和此事件是否已经存在


推荐阅读