我遇到了這個問題
“HotelVmNew.HotelRoomVmNew”型別中不存在型別名稱“RoomStayVmNew”
但我的觀點模型,
public class HotelVmNew: IMapFrom<Domain.Entities.Hotel>
{
public IEnumerable<HotelRoomVmNew> Rooms { get; set; } = new List<HotelRoomVmNew>();
}
public class HotelRoomVmNew: IMapFrom<Domain.Entities.HotelRoom>
{
public IEnumerable<RoomStayVmNew> Stays { get; set; } = new List<RoomStayVmNew>();
}
public class RoomStayVmNew: IMapFrom<Domain.Entities.RoomStay>
{
public IEnumerable<RoomStayFacilityVm> Facilities { get; set; } = new List<RoomStayFacilityVm>();
}
var hotel = await _context.Hotels
.Where(i => i.Code == request.Code)
.Select(i => new HotelVmNew {
Code = i.Code,
Rooms = i.Rooms.Select(i => new HotelVmNew.HotelRoomVmNew {
Id = i.Id,
Stays = i.Stays.Select(x => new HotelVmNew.HotelRoomVmNew.RoomStayVmNew {}),
})
})
當我選擇時HotelRoomVmNew,出現以下錯誤:
型別名稱“RoomStayVmNew”不存在于型別“HotelVmNew.HotelRoomVmNew”中。
為什么會出現這個錯誤?
uj5u.com熱心網友回復:
new HotelVmNew.HotelRoomVmNew.RoomStayVmNew {}
應該
new RoomStayVmNew {}
并且您只需要這樣做,前提是您要選擇房間住宿,因為您的類定義已經通過初始化程式在構造時初始化了一個新串列,盡管我猜測您剛剛截斷了每個住宿的初始化實體。
這個說法:
new HotelVmNew.HotelRoomVmNew.RoomStayVmNew {}
是說希望HotelRoomVmNew的定義存在于 HotelVmNew 中,而 RoomStayVmNew 的定義存在于 HotelRoomVmNew 中。
例如:
public class HotelVmNew: IMapFrom<Domain.Entities.Hotel>
{
public IEnumerable<HotelRoomVmNew> Rooms { get; set; } = new List<HotelRoomVmNew>();
public class HotelRoomVmNew: IMapFrom<Domain.Entities.HotelRoom>
{
public IEnumerable<RoomStayVmNew> Stays { get; set; } = new List<RoomStayVmNew>();
public class RoomStayVmNew: IMapFrom<Domain.Entities.RoomStay>
{
public IEnumerable<RoomStayFacilityVm> Facilities { get; set; } = new List<RoomStayFacilityVm>();
}
}
}
請注意,這些類是在其父級范圍內定義的。您當然可以通過這種方式進行設定,但它會不斷要求您完全擴展類名稱以獲取相關類定義。除非你真的想清楚類的所有權,否則我想不出有什么好的理由這樣做。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/374001.html
標籤:实体框架 asp.net核心 实体框架核心 asp.net-core-webapi
