这些是我的类:
public class HotelRoomRatingView
{
public int HotelID { get; set; }
public roomKinds RoomKinds { get; set; }
public HotelReview HotelReview { get; set; }
public HotelRoomRatingView()
{
}
public HotelRoomRatingView(int hotelId, roomKinds rooms, HotelReview review)
{
this.HotelID = hotelId;
this.RoomKinds = rooms;
this.HotelReview = review;
}
}
public class HotelReview
{
public int HotelReviewID { get; set; }
public double Rating { get; set; }
public List<Review> Reviews { get; set; }
public HotelReview()
{
this.Reviews = new List<Review>();
}
}
public partial class roomKinds : object, System.ComponentModel.INotifyPropertyChanged
{
[Key]
public int roomKindsId { get; set; }
private ObservableCollection<objectKind> objectKindField;
public roomKinds()
{
}
public roomKinds(Class.roomKinds origin)
{
this.objectKindField = origin.objectKind;
}
[System.Xml.Serialization.XmlElementAttribute(Order = 0)]
public ObservableCollection<objectKind> objectKind
{
get
{
return this.objectKindField;
}
set
{
this.objectKindField = value;
this.RaisePropertyChanged("objectKind");
}
}
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string propertyName)
{
System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
if ((propertyChanged != null))
{
propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
}
public partial class Hotel : object, System.ComponentModel.INotifyPropertyChanged
{
[Key]
public int HotelId { get; set; }
private int hotIdField;
// many others properties
[System.Xml.Serialization.XmlElementAttribute(Order = 105)]
public HotelReview hotelReview
{
get;
set;
}
[System.Xml.Serialization.XmlElementAttribute(Order = 104)]
public roomKinds rooms
{
get;
set;
}
[System.Xml.Serialization.XmlElementAttribute(Order = 0)]
public int hotId
{
get
{
return this.hotIdField;
}
set
{
this.hotIdField = value;
this.RaisePropertyChanged("hotId");
}
}
}
我的存储库中的 get 方法如下所示:
public Models.Hotel Get(int id)
{
return db.hotels.SingleOrDefault(h => h.hotId == id);
}
HotelId
和hotId
没关系,我需要这种方式。所以我通过 LINQ 从数据库中获取酒店,我得到酒店,但我没有从其他表中获取数据。我没有得到HotelReview
和RoomKinds
.我在这些属性中得到 null,但在数据库中它们是,它们通过 ID
与Hotel
连接。感谢您的帮助
您需要
使用 .Include
显式加载它们:
return db.hotels.Include(hr => hr.HotelReview)
.Include(rk => rk.RoomKinds)
.SingleOrDefault(h => h.hotId == id);
更新
假设您的实体已正确链接,您应该能够在您的 .包括:
return db.hotels.Include(hr => hr.HotelReview)
.Include(r => r.HotelReview.Reviews)
.Include(rk => rk.RoomKinds)
.SingleOrDefault(h => h.hotId == id);