Reputation: 14102
These are my classes:
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 method in my repository looks like this:
public Models.Hotel Get(int id)
{
return db.hotels.SingleOrDefault(h => h.hotId == id);
}
HotelId
and hotId
are okay I need it this way. So I am getting Hotel from database by LINQ and I get Hotel but I am not getting data from other tables. I am not getting HotelReview
and RoomKinds
. I got null in these properties but in database they are and they are connected with Hotel
by ID
.
Thanks for help
Upvotes: 1
Views: 292
Reputation: 1899
You will need to load those explicitly by using .Include
:
return db.hotels.Include(hr => hr.HotelReview)
.Include(rk => rk.RoomKinds)
.SingleOrDefault(h => h.hotId == id);
UPDATE
Assuming your entities are linked up properly, you should be able to just continue down the chain in your .Include:
return db.hotels.Include(hr => hr.HotelReview)
.Include(r => r.HotelReview.Reviews)
.Include(rk => rk.RoomKinds)
.SingleOrDefault(h => h.hotId == id);
Upvotes: 3