我一直在關注Pro ASP.net MVC 2框架,我發現它非常出色。但這是一個真正的學習曲線,現在我陷入困境。Linq lambda加入錯誤
在本書中,您將構建如下所示的內容,以便進行分頁。
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)
}
一個加入...但我馬上就得到一個智能感知錯誤說 - 無法隱式轉換類型'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; }
}
}
,並代表我的室的桌子上。我是否需要某種代表房間和座標表之間聯接的父實體?
的座標實體看起來是這樣的:
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 { 公衆的IList RoomsWithCoordinates {獲得;組; } public PagingInfo PagingInfo {get;組; }
}}
感謝您的看法,它似乎有所幫助,應用程序現在可以構建並運行,但當我單擊搜索以進入List方法時,出現錯誤: 查詢包含對在不同數據上下文中定義的項目的引用。錯誤發生在這一行 - var viewModel = new RoomsListViewModel – iKode 2011-06-06 13:54:21
我已經在上面添加了RoomsListViewModel的結構 – iKode 2011-06-06 13:56:00
這可能與我不熟悉的DB框架有關。我認爲你需要以某種方式在數據上下文中註冊'RoomWithCoordinates'類,但是我不能給你這個確切的指導,對不起 – Zruty 2011-06-06 14:05:55