Код: Выделить всё
SELECT
Cars.CarId AS carCarId,
Cars.VinCode AS carVinCode,
-- Cars.CustomerId AS carCustomerId,
Cars.NumberPlate AS carNumberPlate,
Cars.Brand AS carBrand,
Cars.Model AS carModel,
Cars.Price AS carPrice,
Cars.NumberOfSeats AS carNumberOfSeats,
Cars.NumberOfDoors AS carNumberOfDoors,
Cars.Mileage AS carMileage,
Cars.MaxFuelCapacity AS carMaxFuelCapacity,
Cars.CurrentFuel AS carCurrentFuel,
Cars.Year AS carYear,
Cars.IsFitForUse AS carIsFitForUse,
Cars.Engine AS carEngine,
Cars.Transmission AS carTransmission,
Cars.Interior AS carInterior,
Cars.Wheels AS carWheels,
Cars.Lights AS carLights,
Cars.Signal AS carSignal,
Cars.Color AS carColor,
-- Cars.DealId AS carDealId,
-- Cars.StatusId AS carStatusId,
TransportStatuses.Number AS carStatusId,
Users.IdNumber AS userIdNumber,
Users.FirstName AS userFirstName,
Users.LastName AS userLastName,
Users.DateOfBirth AS userDateOfBirth,
Users.UserName AS userUserName,
Users.Password AS userPassword,
Users.PassportNumber AS userPassportNumber,
Users.DrivingLicenseNumber AS userDrivingLicenseNumber,
-- Users.EmployementDate AS userEmployementDate,
Users.BasicDiscount AS userBasicDiscount,
Users.Category AS userCategory,
Deals.Id AS dealId,
Deals.CarId AS dealCarId,
Deals.VinCode AS dealVinCode,
Deals.CustomerId AS dealCustomerId,
Deals.Price AS dealPrice,
Deals.DealType dealDealType,
Deals.Name AS dealName,
Inspections.InspectionId AS inspectionInspectionId,
Inspections.CarId AS inspectionCarId,
Inspections.VinCode AS inspectionVinCode,
Inspections.InspectorId AS inspectionInspectorId,
Inspections.InspectionDate AS inspectionInspectionDate,
Inspections.StatusId AS inspectionStatusId,
Repairs.Id AS repairId,
Repairs.Date AS repairDate,
Repairs.CarId repairCarId,
Repairs.VinCode AS repairVinCode,
Repairs.MechanicId AS repairMechanicId,
Repairs.IsSuccessfull AS repairIsSuccessfull,
Repairs.TotalCost AS repairTotalCost,
Repairs.TechnicalInfo AS repairTechnicalInfo
FROM
Cars
LEFT JOIN
Users ON Cars.CustomerId = Users.IdNumber
LEFT JOIN
Deals ON Deals.CarId = Cars.CarId
LEFT JOIN
Inspections ON Inspections.CarId = Cars.CarId
LEFT JOIN
Repairs ON Repairs.CarId = Cars.CarId
LEFT JOIN
TransportStatuses ON Cars.StatusId = TransportStatuses.Id
WHERE
Cars.CarId = @Id;
Код: Выделить всё
public Deal? Engagement { get; set; }
public List? Inspections { get; set; }
public List? Repairs { get; set; }
public Customer? Owner { get; set; }
Код: Выделить всё
SqlConnection connection = SupplementData.DataContext.OpenConnection(connectionString);
string SqlStoredProcedureName = "GetCar";
string carId = id.ToString().ToUpper();
object parameter = new
{
Id = carId
};
List cars = new List
(
connection.Query
(
SqlStoredProcedureName,
(car, customerTemp, deal, inspection, repair) =>
{
car.Owner = customerTemp;
car.Engagement = deal;
car.Inspections.Add(inspection);
car.Repairs.Add(repair);
return car;
},
parameter,
splitOn: "userIdNumber, dealId, inspectionInspectionId, repairId"
)
);
// LAMBDA-EXPRESSION APPROACH
// IEnumerable groupedCars = cars.GroupBy(c => c.CarId);
Car car = cars.First();
car.Inspections = cars.Select(c => c.Inspections.Single()).DistinctBy(i => i.InspectionId).ToList();
car.Repairs = cars.Select(c => c.Repairs.Single()).DistinctBy(r => r.Id).ToList();
SupplementData.DataContext.CloseConnection(connection);
return car;
Необработанное исключение. System.NullReferenceException: Ссылка на объект не установлена на экземпляр объекта.
в CarRental.BussinessLayer.Managers.ServiceManager.c.b__24_2(Inspection i) в C:\Users\F021\source\ repos\Team1_CarRental\CarRental.BussinessLayer\Managers\ServiceManager.cs:строка 328
в System.Linq.Enumerable.DistinctByIterator[TSource,TKey](IEnumerable
Код: Выделить всё
1 source, FuncКод: Выделить всё
1 comparer)+MoveNext() at System.Collections.Generic.List1..стор(ЙЕномерабле1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerableв CarRental.BussinessLayer.Managers.ServiceManager.GetCarFromDatabase(Guid id, String ConnectionString) в C:\Users\F021\source\repos\Team1_CarRental\CarRental.BussinessLayer\ Managers\ServiceManager.cs:строка 328
в CarRental.Presentation.CarRentalPortal.Main(String[] args) в C:\Users\F021\source\repos\Team1_CarRental\CarRental.Presentation\Program. cs:line 95
Я пытаюсь выполнить домашнее задание на онлайн-курсе какой-то частной онлайн-школы, но никто даже не пытается ответить на мои вопросы, когда я спросите, что с этим делать..
Если все смысловые атрибуты не NULL — все работает нормально. Но могут существовать машины без Клиента и т. д... И когда такая машина нашлась — бум, исключение.
Я пробовал сделать все свойства NULL-способными, ничего не помогает...
Подробнее здесь: https://stackoverflow.com/questions/787 ... ia-spliton
Мобильная версия