Я следил за книгой Pro ASP.net MVC 2 Framework, которая показалась мне довольно блестящей. Но это реальная кривая обучения, и теперь я застрял.
В книге вы создаете что-то похожее на приведенное ниже, что позволяет выполнять подкачку.
public ViewResult List([DefaultValue(0)] string cityzip, [DefaultValue(1)] int page)
{
var roomsToShow = roomsRepository.Rooms.Where(x => x.CountryID == cityzip);
var viewModel = new RoomsListViewModel
{
Rooms = roomsToShow.Skip((page - 1) * PageSize).Take(PageSize).ToList(),
PagingInfo = new PagingInfo
{
CurrentPage = page,
ItemsPerPage = PageSize,
TotalItems = roomsToShow.Count()
}
};
return View(viewModel); // Passed to view as ViewData.Model (or simply Model)
}
Я думаю, что нужно адаптировать это, чтобы я мог сделать объединение в поиске
public ViewResult List([DefaultValue(0)] string cityzip, [DefaultValue(1)] int page)
{
var roomsToShow = roomsRepository.Rooms.Join(
roomCoordinatesRepository.RoomCoordinates,
room => room.RoomID,
roomCoordinate => roomCoordinate.RoomID,
(room, roomCoordinate) => new { RoomCoordinate = roomCoordinate, Room = room });
var viewModel = new RoomsListViewModel
{
Rooms = roomsToShow.Skip((page - 1) * PageSize).Take(PageSize).ToList(),
PagingInfo = new PagingInfo
{
CurrentPage = page,
ItemsPerPage = PageSize,
TotalItems = roomsToShow.Count()
}
};
return View(viewModel); // Passed to view as ViewData.Model (or simply Model)
}
... но сразу же я получаю ошибку intellisense, говорящую -
Не удалось неявно преобразовать тип 'System.Collections.Generic.List<AnonymousType#1>'
в 'System.Collections.Generic.IList<MeetingRoom.Domain.Entities.Room>'
. Существует явное преобразование (вам не хватает приведения?)
Я, очевидно, недостаточно хорошо понимаю код, чтобы понять, что не так. Я также чувствую себя немного не в своей тарелке с этим материалом lamda linq
Комната - это доменный объект, который определяется как:
namespace MeetingRoom.Domain.Entities
{
[Table(Name = "Rooms")]
public class Room
{
[Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert)]
public int RoomID { get; set; }
[Column] public string Name { get; set; }
[Column] public string Description { get; set; }
[Column] public decimal Price { get; set; }
[Column] public string Category { get; set; }
[Column] public string Pcode { get; set; }
[Column] public int CountryID { get; set; }
public MeetingRooms.Domain.entities.RoomCoordinate RoomCoordinate { get; set; }
}
}
и представляет мой стол в комнате. Нужна ли какая-то родительская сущность, которая представляла бы соединение между таблицей Room и координатами Room?
Координатная сущность выглядит следующим образом:
namespace MeetingRooms.Domain.entities
{
[Table(Name = "RoomCoordinate")]
public class RoomCoordinate
{
[Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert, Name = "ID")]
public int CoordID { get; set; }
[Column]
public int RoomID { get; set; }
[Column]
public string Coordinates { get; set; }
[Column]
public decimal Latitude { get; set; }
[Column]
public decimal Longitude { get; set; }
}
}
RoomsListViewModel выглядит следующим образом:
пространство имен MeetingRoomsMVC.WebUI.Models
{
открытый класс RoomsListViewModel
{
public IList RoomsWithCoordinates {get; задавать; }
public PagingInfo PagingInfo {get; задавать; }
}
}